Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: openGL

Sivun loppuun

Meitsi [02.11.2003 18:15:48]

#

alotin opengeeällän mutta oppiminen tyssäsi heti ensimmäiseen koodivinkkiin. nettisivun ohjeissa on tämmöinen koodi:
#include "glos.h"

#include <GL/gl.h>
#include <GL/glaux.h>
#include <GL/glu.h>

int main( void )
{

auxInitDisplayMode( AUX_SINGLE | AUX_RGB );
auxInitPosition( 0, 0, 250, 250 ); // Alustaa ikkunan GLAUX aliohjelmakirjaston
auxInitWindow( "Kolmio" ); // aliohjelmilla.

glClearColor( 0.0, 0.0, 0.0, 0.0 ); // Määrää pohjavärin mustaksi.
glClear( GL_COLOR_BUFFER_BIT ); // Suorittaa taustan värityksen.
glColor3f ( 1.0, 1.0, 1.0 ); // Piirtoväri valkoiseksi.
glOrtho( -1.0, 1.0, -1.0, 1.0, -1.0, 1.0 ); // Määrää koordinaatiston...
// (left, right, bottom, top, near, far).
glBegin ( GL_POLYGON ); // Aloitetaan polygonin määrittely.

glVertex2f( -0.5, -0.5 ); // Vasen alareuna.
glVertex2f( 0.0, 0.5 ); // Keskellä ylhäällä.
glVertex2f( 0.5, -0.5 ); // Oikea alareuna.

glEnd( ); // Polygonin määrittely valmis.
glFlush( ); // Suorittaa piirron puskurist.a ikkunaan.
Sleep( 3000 ); // Pitää ikkunan näkyvissä 3 sek.
return( 0 );

}

muuten saattaisi toimia mutta kääntäjä ei löydä tota glos.h tiedostoa. mikä se on ja mihin sitä tarvii? noi muut se kyllä löytää.

kaviaari [02.11.2003 18:24:44]

#

Mitä ilmeisimmin toi koodivinkki on jollekin pelimoottorille. jos haluat tuon toimimaan kokeile etsiä tiedosto vaikkapa googlella. Itse suosittelisin kyllä sitä että koodaisit ihan oman ikkunan alustuksen ja näppäimistön lukemiset voinee ainakin alussa totetuttaa makrolla.

Meitsi [02.11.2003 18:26:56]

#

outoo. ei sillä saitilla puhuttu mistää moottorista. linkki: http://www.mit.jyu.fi/opiskelu/seminaarit/ohjelmistotekniikka/opengl/ näyttää ihan kelpo sivulta.

Meitsi [02.11.2003 18:30:01]

#

juu löyty googlesta tämmönen sisältö sille tiedostolle: 00001 //************************************************************************
00002 // This is an OS specific header file
00003 //
00004 // File: GLOS.H
00005 //************************************************************************
00006
00007 /* disable data conversion warnings */
00008 #pragma warning(disable : 4305) /* MIPS */
00009 #pragma warning(disable : 4244) /* MIPS */
00010 #pragma warning(disable : 4309) // 'initializing' truncation of constant value
00011

mitä tää tekee???

thefox [03.11.2003 14:25:27]

#

Toi ny käyttää ihan perus OpenGL ja AUX-funktioita. Tuo GLOS.h on sinänsä turha, se vaan käskee MSVC++:n disabloimaan muutamat varoitukset joita GL-headerit ilmeisesti aiheuttaisivat.

Meitsi [03.11.2003 15:48:31]

#

mulla devc++ valittaa kokoajan ton koodin virheellisyyttä eikä se käänny. eikä toi glos juttu auta. ääh täytyy ottaa uus projekti ja kokeilla uudelleen...

Meitsi [03.11.2003 22:17:14]

#

ei toimi millään.
tässä koodi:
#include <GL/gl.h>
#include <GL/glaux.h>
#include <GL/glu.h>

int main( void )
{

auxInitDisplayMode( AUX_SINGLE | AUX_RGB );
auxInitPosition( 0, 0, 250, 250 ); // Alustaa ikkunan GLAUX aliohjelmakirjaston
auxInitWindow( "Kolmio" ); // aliohjelmilla.

glClearColor( 0.0, 0.0, 0.0, 0.0 ); // Määrää pohjavärin mustaksi.
glClear( GL_COLOR_BUFFER_BIT ); // Suorittaa taustan värityksen.
glColor3f ( 1.0, 1.0, 1.0 ); // Piirtoväri valkoiseksi.
glOrtho( -1.0, 1.0, -1.0, 1.0, -1.0, 1.0 ); // Määrää koordinaatiston...
// (left, right, bottom, top, near, far).
glBegin ( GL_POLYGON ); // Aloitetaan polygonin määrittely.

glVertex2f( -0.5, -0.5 ); // Vasen alareuna.
glVertex2f( 0.0, 0.5 ); // Keskellä ylhäällä.
glVertex2f( 0.5, -0.5 ); // Oikea alareuna.

glEnd( ); // Polygonin määrittely valmis.
glFlush( ); // Suorittaa piirron puskurist.a ikkunaan.
Sleep( 3000 ); // Pitää ikkunan näkyvissä 3 sek.
return( 0 );

}

kokeilin sekä c että c++ projektina mutta tunkee silti syntax erroria. kopsasin sen glos.h:n sisällön koodin alkuun mutta ei sekään auttanu. Kummaa. mulla on devc++ neljä. Saattaakohan johtua siitä, että kolmosversiossa ei ollu openglkirjastoja mukana ja nyt tähän versioon onkin pujahtanut jokin bugi eivätkä ne toimi. Onko kenelläkään samaa ongelmaa / osaako kukan auttaa. Helppliis!

Meitsi [03.11.2003 22:21:11]

#

Tässä lista compiler erroreista:
C:\DEV-C_~1\INCLUDE\GL\gl.h:1470: warning: data definition has no type or storage class
C:\DEV-C_~1\INCLUDE\GL\gl.h:1473: parse error before `*'
C:\DEV-C_~1\INCLUDE\GL\gl.h:1474: parse error before `*'
C:\DEV-C_~1\INCLUDE\GL\gl.h:1475: parse error before `*'
C:\DEV-C_~1\INCLUDE\GL\gl.h:1476: parse error before `*'
C:\DEV-C_~1\INCLUDE\GL\gl.h:1477: parse error before `*'
C:\DEV-C_~1\INCLUDE\GL\gl.h:1478: parse error before `*'
C:\DEV-C_~1\INCLUDE\GL\gl.h:1479: parse error before `*'
C:\DEV-C_~1\INCLUDE\GL\gl.h:1480: parse error before `*'
C:\DEV-C_~1\INCLUDE\GL\gl.h:1481: parse error before `*'
C:\DEV-C_~1\INCLUDE\GL\gl.h:1482: parse error before `*'
C:\DEV-C_~1\INCLUDE\GL\gl.h:1485: parse error before `*'
C:\DEV-C_~1\INCLUDE\GL\gl.h:1488: parse error before `*'
C:\DEV-C_~1\INCLUDE\GL\gl.h:1491: parse error before `*'
C:\DEV-C_~1\INCLUDE\GL\gl.h:1494: parse error before `*'
C:\DEV-C_~1\INCLUDE\GL\gl.h:1496: parse error before `*'
C:\DEV-C_~1\INCLUDE\GL\gl.h:1498: parse error before `*'

ja linkker erroreissa:
gcc: c:\omat tiedostot\opengl\ouppi.o: No such file or directory
gcc: file path prefix `C:\DEV-C_~1\BIN\' never used

EDIT: Näyttää niinkuin vika olisi kirjastoissa? voiko näin olla?

Meitsi [04.11.2003 19:36:52]

#

Auttaisikohan jos lataisi johonkin toiseen kansioon uudet kirjastot ja kokeilisi linkittää uudelleen uusilla kirjastoilla. mistä opengeeällän kirjastot voi imuroida?

acorn [04.11.2003 19:39:02]

#

Yrittäppä "#include <windows.h>" ennen OpenGL:n kirjastojen sisällyttämistä.

Meitsi [04.11.2003 19:46:30]

#

jee, ei tuu enää compiler-erroreita vaan linkkeri enää valittaa.
tässä lista:
c:\omat tiedostot\opengl\workkiiko.o(.text+0x29):workkiiko.cpp: undefined reference to `auxInitDisplayMode@4'
c:\omat tiedostot\opengl\workkiiko.o(.text+0x3f):workkiiko.cpp: undefined reference to `auxInitPosition@16'
c:\omat tiedostot\opengl\workkiiko.o(.text+0x4c):workkiiko.cpp: undefined reference to `auxInitWindowA@4'
c:\omat tiedostot\opengl\workkiiko.o(.text+0x5c):workkiiko.cpp: undefined reference to `glClearColor@16'
c:\omat tiedostot\opengl\workkiiko.o(.text+0x69):workkiiko.cpp: undefined reference to `glClear@4'
c:\omat tiedostot\opengl\workkiiko.o(.text+0x83):workkiiko.cpp: undefined reference to `glColor3f@12'
c:\omat tiedostot\opengl\workkiiko.o(.text+0xc4):workkiiko.cpp: undefined reference to `glOrtho@48'
c:\omat tiedostot\opengl\workkiiko.o(.text+0xce):workkiiko.cpp: undefined reference to `glBegin@4'
c:\omat tiedostot\opengl\workkiiko.o(.text+0xf1):workkiiko.cpp: undefined reference to `glVertex2f@8'
c:\omat tiedostot\opengl\workkiiko.o(.text+0x10a):workkiiko.cpp: undefined reference to `glVertex2f@8'
c:\omat tiedostot\opengl\workkiiko.o(.text+0x12d):workkiiko.cpp: undefined reference to `glVertex2f@8'
c:\omat tiedostot\opengl\workkiiko.o(.text+0x135):workkiiko.cpp: undefined reference to `glEnd@0'
c:\omat tiedostot\opengl\workkiiko.o(.text+0x13a):workkiiko.cpp: undefined reference to `glFlush@0'

thefox [07.11.2003 16:46:17]

#

Jospa vaikka linkkaisit sen OpenGL:n (opengl ja aux molemmat).

Meitsi [13.11.2003 19:50:54]

#

En tajuu, kun ei vieläkään wörki. tossa projekti: http://www.freewebs.com/dizzy_productions_fin/zippi.zip
EDIT: kopsatkaa osoteriville toi...

thefox [13.11.2003 20:16:15]

#

Voi elämäni kevät.

Mene:
Project -> Project options -> Load object files

Valitse Dev-C++:n Lib-hakemistosta ainakin tiedostot "libopengl32.a", "libglaux.a" ja "libglu32.a"

Meitsi [17.11.2003 20:01:17]

#

Ei niin ei. 1 workki.c
C:\DEV-C_~1\INCLUDE\GL\gl.h:1135: syntax error before `void'
tota virhettä on tän mukaan melkein joka rivillä.

thefox [17.11.2003 22:01:07]

#

Rakas lapsi: acornhan vartavasten sanoi: "Yrittäppä "#include <windows.h>" ennen OpenGL:n kirjastojen sisällyttämistä."

Meitsi [17.11.2003 22:10:55]

#

Katos poikaa. Mutta nyt wintoosa herjaa ettei tarvittavaa glaux dlllää löydy ja ilmeisesti devi herjaa unkown error

thefox [19.11.2003 11:35:11]

#

Ah, afaik (mitä netistä satuin lukemaan) libglauxia ei yksinkertaisesti pitäisi käyttää eikä ole mitään syytä miksi se olisi Dev-C++:n mukana alunperinkään. Tuo libglaux.a on siis ilmeisesti paskana. Käytä vaikka gluttia sen tilalla.

edit: msvc++:sta (ainakin 6:sta, .netistä tuskin) löytyy glaux.libbi ihan staattisesti linkattavana ja toimivana kirjastona, mutta se on tosiaan microsoftin formaatissa jota gcc ei tue.

Markus [19.11.2003 19:08:29]

#

Tuo koodivinkki näkyy olevan muutenkin virheellinen. Tässä sama koodi GLUT kirjastoa käyttävänä.
Muista linkitää mukaan opengl32.lib glu32.lib ja glut32.lib

#include <gl/glut.h>

void glutResize(int width, int height)
{
  glViewport(0, 0, width, height);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluOrtho2D(-1.0, 1.0, -1.0, 1.0);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
}

void glutDisplay(void)
{
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  glBegin ( GL_POLYGON ); // Aloitetaan polygonin määrittely.
  glVertex2f( -0.5, -0.5 ); // Vasen alareuna.
  glVertex2f( 0.0, 0.5 ); // Keskellä ylhäällä.
  glVertex2f( 0.5, -0.5 ); // Oikea alareuna.
  glEnd( ); // Polygonin määrittely valmis.

  glutSwapBuffers();
}

int main(int argc, char **argv)
{
  // Alustus
  glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);
  glutInitWindowSize(640, 480);  // Ikkunan koko
  glutInit(&argc, argv);

  // Luo itse ikkuna.
  glutCreateWindow("GLUT ikkuna.");

  // Määrittele Callback funktiot.

  // Tätä kutsutaan aina kun ikkunan kokoa muutetaan.
  glutReshapeFunc(glutResize);

  // Tätä kutsutaan aina kun ikkunan sisältö pitää piirtää.
  // Esim. kun käyttäjä siirtää ikkunaa tai muuttaa sen kokoa.
  glutDisplayFunc(glutDisplay);

  // Tätä kutsutaan aina kun voidaan.
  glutIdleFunc(glutDisplay);

  // Pääsilmukka.
  // Huom silmukka ei palaa koskaan vaan käyttäjän pitää sammuttaa
  // ikkuna sulkemispainikkeesta tai painamalla ALT+F4.
  glutMainLoop();

  return 0;
}

Meitsi [19.11.2003 20:02:16]

#

gl\glut.h No such file or directory. :'-(

Markus [19.11.2003 21:45:13]

#

lainaus:

gl\glut.h No such file or directory. :'-(

Sinun pitää imuroida jostakin glut.h ja glut32.lib (tai dev-c++ taitaa tarvita, glut32.a eikä glut32.lib)
Kokeile etsiä googlella.
Aseta glut.h kääntäjän include\gl hakemistoon ja glut32.a kääntäjän lib hakemistoon.

Meitsi [20.11.2003 15:37:23]

#

Laitoin glut32.libin ja glut.h:n oikeille paikoilleen muttei toimi. Google ei löytänyt glut32.aata. Projekti on tuolla niin voitte kurkata mikä mahtaa mättää: http://www.freewebs.com/dizzy_productions_fin/paket.zip

Markus [20.11.2003 16:56:47]

#

Imuroi paketti:
http://mywebpage.netscape.com/PtrPck/glutming.zip
Pura libglut32.a kääntäjän lib hakemistoon ja glut.h kääntäjän include/gl hakemistoon.

Linkitä tarvittavat tiedostot kirjoittamalla
Project Options->Parameters->Linker ikkunaan:
-lopengl32 -lglu32 -lglut32

Tallenna projekti ja kokeile kääntää.

Jos kääntäjä antaa vielä virjeen:
redeclaration of wchar_t
niin kommentoi kyseinen rivi pois glut.h:sta.

Meitsi [20.11.2003 17:11:50]

#

Virhe sovellusta käynnistettäessä.
Tarvittavaa tiedostoa GLUT32.DLL ei löydy.

Meitsi [20.11.2003 17:16:44]

#

Ei kun ei mitään. Siellä tsipissä oli se filu ja kun laitoin oikeeseen paikkaan niin johan alko wörkkiin. Ja ISO KIITOS kaikille niille jotka tässä minua neuvoivat! Nyt toimii! :)

thefox [20.11.2003 22:36:39]

#

libglut32.a ja glut.h tulee Dev-C++:ssa ihan oletuksena.

Meitsi [21.11.2003 18:09:55]

#

Ei ollu alunperin glut.h ta mukana.
Mutta miten saa ikkunaan laitettua kuvan jostakin kuvatiedostosta?

Markus [22.11.2003 12:03:38]

#

lainaus:

miten saa ikkunaan laitettua kuvan jostakin kuvatiedostosta?

OpenGL:stä löytyy kyllä funktio glBitmap(), mutta parempi tapa on piirtää teksturoitu nelikulmainen polygoni. Tämän haittapuolena on se että joillakin vanhoilla 3D korteilla suurin sallittu tekstuuri koko on 256x256 ja tekstuurin koon pitää olla kakkosen potensssi eli 2, 4, 8, 16, 32 jne...

Eli sinun pitää kirjoittaa funktio, joka lukee kuva datan jostakin tiedostosta, tarvittaessa skaalaa kuvan suurimpaan sallittuun tekstuuri kokoon ja tekee kuvasta tekstuurin.

Meitsi [23.11.2003 13:00:18]

#

Ok. Ei vielä tohon taidot riitä, mutta jään odottelemaan kirjaston kirjaa...

Tomix [17.12.2003 16:03:38]

#

lainaus:

Ei kun ei mitään. Siellä tsipissä oli se filu ja kun laitoin oikeeseen paikkaan niin johan alko wörkkiin. Ja ISO KIITOS kaikille niille jotka tässä minua neuvoivat! Nyt toimii! :)

Eh, siis mihin _oikeeseen paikkaan_?
Itellä on just sama ongelma ollu alunalkaen, sain toimimaan kaiken tähän asti, eli nyt ohjelma valittaa:

Virhe sovellusta käynnistettäessä.
Tarvittavaa tiedostoa GLUT32.DLL ei löydy.

Tiedosto kyllä oli zipissä, purin sen mielestäni kaikkiin mahdollisiin kansioihin, mutta silti se valittaa tosta?

sooda [17.12.2003 17:08:20]

#

kaikki järjestelmä dll:t ym joko siihen kansioon missä exe on tai sitten windowsin alle system kansioon(tai jossain tapauksissa system32)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta