 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 12.01.2007, 17:22 Titel: Frage zu Texturen in Stormy's openGL tutorial |
|
|
Ich arbeite mich grade durch Stormy's OpenGL Tutorial durch (es ist Spitze!)
und bin beim Kapitel Texturen anzeigen angelangt. Ich habe mir die Grafik "grassflaeche.bmp" und auhc die genannten Laderoutinen runtergeladen und alles in den richtigen Ordnergesteckt. Wenn ich nun das Programm ausführe bleibt der Bildschirm jedoch schwarz und völlig rasenfrei. Was ist falsch? Ich hab es soweit ich weiss 1:1 aus dem Tutorial übernommen. Ich benutze Freebasic 0.16. Hier ist der Code:
Code: | ' Einbindung von OpenGL
#Include Once "GL/gl.bi"
#Include Once "GL/glu.bi"
#Include "inc/2d_opengl.bi"
' Festlegung der Konstanten, die für den Bildschirm wichtig sind
Const scrnX = 640
Const scrnY = 480
Const depth = 32
Const fullscreen = &h0 ' Vollbildmodus ( &h0 = aus, &h1 = an )
ScreenRes scrnX,scrnY,depth,,&h2 Or fullscreen
' Konfiguration von OpenGL
glMatrixMode(GL_PROJECTION) ' Matrix definieren
glLoadIdentity
glViewport(0,0,scrnX,scrnY) ' Achse festlegen
glOrtho(0,scrnX,scrnY,0,-128,128)
glMatrixMode(GL_MODELVIEW) ' Deaktivierung des Rendern der Rückseiten
glEnable(GL_CULL_FACE)
glCullFace(GL_BACK)
glEnable GL_TEXTURE_2D ' Texturen aktivieren
glLoadIdentity
glEnable(GL_DEPTH_TEST) ' Tiefentest
glDepthFunc(GL_LESS)
glEnable(GL_ALPHA_TEST) ' Alphatest
glAlphaFunc(GL_GREATER, 0.1)
Do
Dim Textur As GFXType ' Textur definieren
Call load_texture("grassflaeche.bmp", Textur) ' Grasstextur laden
' Eigentlicher Zeichenteil:
glBindTexture GL_TEXTURE_2D, Textur.Handle ' Texture binden
glTranslatef 100,100,0 ' z = 0
glBegin GL_QUADS
glTexCoord2f 0, 0
glVertex2i 0, 50 '' LINKS UNTEN (1. Koordinate)
glTexCoord2f 1, 0
glVertex2i 50, 50 '' RECHTS UNTEN (2. Koordinate)
glTexCoord2f 1, 1
glVertex2i 50, 0 '' RECHTS OBEN (3. Koordinate)
glTexCoord2f 0, 1
glVertex2i 0, 0 '' LINKS OBEN (4. Koordinate)
glEnd
glBindTexture GL_TEXTURE_2D, 0 ' Texture freigeben
glBindTexture GL_TEXTURE_2D, 0 ' Texture freigeben
glClear GL_COLOR_BUFFER_BIT Or GL_DEPTH_BUFFER_BIT
glFlush ' Verarbeitung der Befehle
Flip
ScreenSync
Loop Until MultiKey(&h01) ' Verlasse die Schleife sobald Escape gedrückt wird
|
Danke schonmal im vorraus _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 12.01.2007, 19:23 Titel: |
|
|
Hi,
die Reihenfolge der Anweisungen ist etwas anders:
Code: | ...
...
Dim Textur As GFXType ' Textur definieren
Call load_texture("grass.tga", Textur) ' Grasstextur laden
glBindTexture GL_TEXTURE_2D, Textur.Handle ' Texture binden
' Eigentlicher Zeichenteil:
glClear GL_COLOR_BUFFER_BIT Or GL_DEPTH_BUFFER_BIT
glTranslatef 100,100,0 ' z = 0
glBegin GL_QUADS
glTexCoord2f 0, 0
glVertex2i 0, textur.height '' LINKS UNTEN (1. Koordinate)
glTexCoord2f 1, 0
glVertex2i textur.width, textur.height '' RECHTS UNTEN (2. Koordinate)
glTexCoord2f 1, 1
glVertex2i textur.width, 0 '' RECHTS OBEN (3. Koordinate)
glTexCoord2f 0, 1
glVertex2i 0, 0 '' LINKS OBEN (4. Koordinate)
glEnd
glLoadIdentity
glFlush ' Verarbeitung der Befehle
glBindTexture GL_TEXTURE_2D, 0 ' Texture freigeben
Do
Flip
ScreenSync
Loop Until Multikey(&h01) ' Verlasse die Schleife sobald Escape gedrückt wird
|
Ich hatte keine grassflaeche.bmp daher hab ich grass.tga benutzt. _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 12.01.2007, 20:46 Titel: |
|
|
Mit deinem Code bekomme ich genau das selbe Problem. Hier:
Code: |
' Einbindung von OpenGL
#Include Once "GL/gl.bi"
#Include Once "GL/glu.bi"
#Include "inc/2d_opengl.bi"
' Festlegung der Konstanten, die für den Bildschirm wichtig sind
Const scrnX = 640
Const scrnY = 480
Const depth = 32
Const fullscreen = &h0 ' Vollbildmodus ( &h0 = aus, &h1 = an )
ScreenRes scrnX,scrnY,depth,,&h2 Or fullscreen
' Konfiguration von OpenGL
glMatrixMode(GL_PROJECTION) ' Matrix definieren
glLoadIdentity
glViewport(0,0,scrnX,scrnY) ' Achse festlegen
glOrtho(0,scrnX,scrnY,0,-128,128)
glMatrixMode(GL_MODELVIEW) ' Deaktivierung des Rendern der Rückseiten
glEnable(GL_CULL_FACE)
glCullFace(GL_BACK)
glEnable GL_TEXTURE_2D ' Texturen aktivieren
glLoadIdentity
glEnable(GL_DEPTH_TEST) ' Tiefentest
glDepthFunc(GL_LESS)
glEnable(GL_ALPHA_TEST) ' Alphatest
glAlphaFunc(GL_GREATER, 0.1)
Dim Textur As GFXType ' Textur definieren
Call load_texture("texture_grass.jpg", Textur) ' Grasstextur laden
glBindTexture GL_TEXTURE_2D, Textur.Handle ' Texture binden
' Eigentlicher Zeichenteil:
glClear GL_COLOR_BUFFER_BIT Or GL_DEPTH_BUFFER_BIT
glTranslatef 100,100,0 ' z = 0
glBegin GL_QUADS
glTexCoord2f 0, 0
glVertex2i 0, textur.height '' LINKS UNTEN (1. Koordinate)
glTexCoord2f 1, 0
glVertex2i textur.Width, textur.height '' RECHTS UNTEN (2. Koordinate)
glTexCoord2f 1, 1
glVertex2i textur.Width, 0 '' RECHTS OBEN (3. Koordinate)
glTexCoord2f 0, 1
glVertex2i 0, 0 '' LINKS OBEN (4. Koordinate)
glEnd
glLoadIdentity
glFlush ' Verarbeitung der Befehle
glBindTexture GL_TEXTURE_2D, 0 ' Texture freigeben
Do
Flip
ScreenSync
Loop Until MultiKey(&h01) ' Verlasse die Schleife sobald Escape gedrückt wird |
_________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 12.01.2007, 21:50 Titel: |
|
|
Hast du eine andere '2d_opengl.bi' (' Generic loader for tga, bmp and png) als ich?
Mit
ogl_load_bmp.bi
ogl_load_png.bi
ogl_load_tga.bi
kann die bei mir nur Bilder aus bmp, png und tga Dateien laden. _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Stormy

Anmeldungsdatum: 10.09.2004 Beiträge: 567 Wohnort: Sachsen - wo die schönen Frauen wachsen ;)
|
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 12.01.2007, 22:56 Titel: |
|
|
ok, dass erklaert alles _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 12.01.2007, 23:04 Titel: |
|
|
doppelpost, ich weiss srry (ja ich kenne die editfunktion, mache aber in diesem fall absichtlich einen Doppelpost)
@Stormy: Dann ist die Reihenfolge der Befehle in der Codezusammenfassung zum Texturenladen aber falsch, oder?
Code: |
...'Ich habe natuerlich den Initialisierungskrams drin und die anderen Sachen klappen ja auch
dim Textur as GFXType ' Textur definieren
call load_texture("C:\WINDOWS\Desktop\examples\resources\examples\grass.tga", Textur) ' Grasstextur laden
' Eigentlicher Zeichenteil:
glBindTexture GL_TEXTURE_2D, Textur.Handle ' Texture binden
glTranslatef 100,100,0 ' z = 0
glBegin GL_QUADS
glTexCoord2f 0, 0
glVertex2i 0, 50 '' LINKS UNTEN (1. Koordinate)
glTexCoord2f 1, 0
glVertex2i 50, 50 '' RECHTS UNTEN (2. Koordinate)
glTexCoord2f 1, 1
glVertex2i 50, 0 '' RECHTS OBEN (3. Koordinate)
glTexCoord2f 0, 1
glVertex2i 0, 0 '' LINKS OBEN (4. Koordinate)
glEnd
glLoadIdentity
glBindTexture GL_TEXTURE_2D, 0 ' Texture freigeben |
Dieser COde erzeugt bei mir wie gesagt, auch mit TGA nur ein leeres Fenster _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
Stormy

Anmeldungsdatum: 10.09.2004 Beiträge: 567 Wohnort: Sachsen - wo die schönen Frauen wachsen ;)
|
Verfasst am: 13.01.2007, 13:04 Titel: |
|
|
Hallo alfonsospringer,
du musst die Zeichenbefehle innerhalb der Loop-Schleife setzen. Probier diesen Quellcode mal aus. Du musst ggf. den Pfad zur Textur ändern:
Code: | ' Einbindung von OpenGL
#Include Once "GL/gl.bi"
#Include Once "GL/glu.bi"
#Include "inc/2d_opengl.bi"
' Festlegung der Konstanten, die für den Bildschirm wichtig sind
Const scrnX = 640
Const scrnY = 480
Const depth = 32
Const fullscreen = &h0 ' Vollbildmodus ( &h0 = aus, &h1 = an )
ScreenRes scrnX,scrnY,depth,,&h2 Or fullscreen
' Konfiguration von OpenGL
glMatrixMode(GL_PROJECTION) ' Matrix definieren
glLoadIdentity
glViewport(0,0,scrnX,scrnY) ' Achse festlegen
glOrtho(0,scrnX,scrnY,0,-128,128)
glMatrixMode(GL_MODELVIEW) ' Deaktivierung des Rendern der Rückseiten
glEnable(GL_CULL_FACE)
glCullFace(GL_BACK)
glEnable GL_TEXTURE_2D ' Texturen aktivieren
glLoadIdentity
glEnable(GL_DEPTH_TEST) ' Tiefentest
glDepthFunc(GL_LESS)
glEnable(GL_ALPHA_TEST) ' Alphatest
glAlphaFunc(GL_GREATER, 0.1)
Dim Textur As GFXType ' Textur definieren
load_texture("resources/examples/grass.tga", Textur) ' Grasstextur laden
glBindTexture GL_TEXTURE_2D, Textur.Handle ' Texture binden
Do
' Eigentlicher Zeichenteil:
glClear GL_COLOR_BUFFER_BIT Or GL_DEPTH_BUFFER_BIT
glTranslatef 100,100,0 ' z = 0
glBegin GL_QUADS
glTexCoord2f 0, 0
glVertex2i 0, textur.height '' LINKS UNTEN (1. Koordinate)
glTexCoord2f 1, 0
glVertex2i textur.Width, textur.height '' RECHTS UNTEN (2. Koordinate)
glTexCoord2f 1, 1
glVertex2i textur.Width, 0 '' RECHTS OBEN (3. Koordinate)
glTexCoord2f 0, 1
glVertex2i 0, 0 '' LINKS OBEN (4. Koordinate)
glEnd
glLoadIdentity
glFlush ' Verarbeitung der Befehle
Flip
ScreenSync
Loop Until MultiKey(&h01) ' Verlasse die Schleife sobald Escape gedrückt wird
glBindTexture GL_TEXTURE_2D, 0 ' Texture freigeben |
_________________ +++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial |
|
Nach oben |
|
 |
alfonsospringer
Anmeldungsdatum: 27.04.2006 Beiträge: 445
|
Verfasst am: 13.01.2007, 13:29 Titel: |
|
|
ok klappt - danke _________________ Die Antworten zu fast allen Fragen des Lebens findest du entweder im MonsterFAQ oder der Befehlsreferenz - Und wenn du gar nicht mehr weiter weisst ? -> Wikipedia
ALLE RECHTSCHREIBFEHLER DIE ICH MACHE SIND BEABSICHTIGT, DAMIT DIE LEUTE, DIE SPAß DARAN HABEN SOLCHE ZU FINDEN, ETWAS ZU TUN HABEN |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|