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ää.
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.
outoo. ei sillä saitilla puhuttu mistää moottorista. linkki: http://www.mit.jyu.fi/opiskelu/seminaarit/
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???
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.
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...
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!
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?
Auttaisikohan jos lataisi johonkin toiseen kansioon uudet kirjastot ja kokeilisi linkittää uudelleen uusilla kirjastoilla. mistä opengeeällän kirjastot voi imuroida?
Yrittäppä "#include <windows.h>" ennen OpenGL:n kirjastojen sisällyttämistä.
jee, ei tuu enää compiler-erroreita vaan linkkeri enää valittaa.
tässä lista:
c:\omat tiedostot\opengl\workkiiko.o(.text+0x29):
c:\omat tiedostot\opengl\workkiiko.o(.text+0x3f):
c:\omat tiedostot\opengl\workkiiko.o(.text+0x4c):
c:\omat tiedostot\opengl\workkiiko.o(.text+0x5c):
c:\omat tiedostot\opengl\workkiiko.o(.text+0x69):
c:\omat tiedostot\opengl\workkiiko.o(.text+0x83):
c:\omat tiedostot\opengl\workkiiko.o(.text+0xc4):
c:\omat tiedostot\opengl\workkiiko.o(.text+0xce):
c:\omat tiedostot\opengl\workkiiko.o(.text+0xf1):
c:\omat tiedostot\opengl\workkiiko.o(.text+0x10a):
c:\omat tiedostot\opengl\workkiiko.o(.text+0x12d):
c:\omat tiedostot\opengl\workkiiko.o(.text+0x135):
c:\omat tiedostot\opengl\workkiiko.o(.text+0x13a):
Jospa vaikka linkkaisit sen OpenGL:n (opengl ja aux molemmat).
En tajuu, kun ei vieläkään wörki. tossa projekti: http://www.freewebs.com/dizzy_productions_fin/
EDIT: kopsatkaa osoteriville toi...
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"
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ä.
Rakas lapsi: acornhan vartavasten sanoi: "Yrittäppä "#include <windows.h>" ennen OpenGL:n kirjastojen sisällyttämistä."
Katos poikaa. Mutta nyt wintoosa herjaa ettei tarvittavaa glaux dlllää löydy ja ilmeisesti devi herjaa unkown error
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.
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; }
gl\glut.h No such file or directory. :'-(
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.
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/
Imuroi paketti:
http://mywebpage.netscape.com/PtrPck/glutming.
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.
Virhe sovellusta käynnistettäessä.
Tarvittavaa tiedostoa GLUT32.DLL ei löydy.
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! :)
libglut32.a ja glut.h tulee Dev-C++:ssa ihan oletuksena.
Ei ollu alunperin glut.h ta mukana.
Mutta miten saa ikkunaan laitettua kuvan jostakin kuvatiedostosta?
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.
Ok. Ei vielä tohon taidot riitä, mutta jään odottelemaan kirjaston kirjaa...
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?
kaikki järjestelmä dll:t ym joko siihen kansioon missä exe on tai sitten windowsin alle system kansioon(tai jossain tapauksissa system32)
Aihe on jo aika vanha, joten et voi enää vastata siihen.