 |
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 |
King-01 gesperrt

Anmeldungsdatum: 26.02.2007 Beiträge: 351
|
Verfasst am: 27.08.2007, 18:51 Titel: Problem mit OpenGL-Programm |
|
|
Hi,
bin gerade dabei OpenGL zu lernen (bin noch nicht weit) und hab da ein kleines problem, wenn ich in der Hauptschleife das kommando sleep benutze.
Hier ist der Quellcode:
Code: |
#include once "GL/gl.bi"
#include once "GL/glu.bi"
const X = 1280
const Y = 1024
const depth = 32
const fullscreen = &h1
screenres X,Y,depth,,&h2 OR fullscreen
glMatrixMode(GL_PROJECTION)
glLoadIdentity
glViewport(0,0,X,Y)
glOrtho(0,X,Y,0,-128,128)
glMatrixMode(GL_MODELVIEW)
glEnable(GL_CULL_FACE)
glCullFace(GL_BACK)
glEnable GL_TEXTURE_2D
glLoadIdentity
glEnable(GL_DEPTH_TEST)
glDepthFunc(GL_LESS)
glEnable(GL_ALPHA_TEST)
glAlphaFunc(GL_GREATER, 0.1)
dim x1 as integer
dim y1 as integer
dim x2 as integer
dim y2 as integer
dim x3 as integer
dim y3 as integer
dim x4 as integer
dim y4 as integer
dim xyz as integer
x1=0: y1=50
x2=50: y2=50
x3=50: y3=0
x4=0: y4=0
for xyz=1 to 30
x1=x1+50
y1=y1+50
x2=x2+50
y2=y2+50
x3=x3+50
y3=y3+50
x4=x4+50
y4=y4+50
glClear GL_DEPTH_BUFFER_BIT
glBegin GL_QUADS
glVertex2i x1, y1
glVertex2i x2, y2
glVertex2i x3, y3
glVertex2i x4, y4
glEnd
glFlush 'Verarbeitung der Befehle
flip
'sreensync (funktioniert irgentwie nicht)
sleep 300
next
|
screensync funktioniert auch nicht (fehlermeldung), und wenn ich bei glClear noch GL_COLOR BUFFER_BIT angebe, kommt auch eine Fehlermdeldung.
Aber nun zum Hauptproblem: Wenn ich sleep 300 da eingebe, dann wird die reihe mit den quadraten erst normal hingezeichnet, aber dann nach paar quadraten, wird immer ein quadrat ausgelassen, bzw. schwarz.
wenn ich sleep 3000 eingebe, wird gleich nach dem 1. quadrat immer eins ausgelassen.
schauts euch am besten mal an.
und kanns eigentlich sein, dass man in der neuen FB-Version die Variablen deklarieren muss? weil ich muss das bei mir immer. _________________ [quote="IRC"](22:41:56)<PMedia>Jojo, hats nen Grund warum wir chatten obwohl du grad neben mir sitzt?
...
(23:00:59)<PMedia>USB war erst als Waffe geplant[/quote] |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 27.08.2007, 19:05 Titel: |
|
|
1) Es wird in einer OGL-Schleife nicht gewartet. Erst recht nicht rumgeSLEEPt.
2) Dass man alles Deklarieren muss ist bereits seit 0.17 normal, und gehört auch einfach zur besseren Lesbarkeit & zum besseren Stil.
3) DIMs kann man zusammenfassen: Code: | dim as integer x1,y1,x2,y2,x3,y3,x4,y4,xyz |
4) Code: | glClear GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT |
5) ScreenSync geht nicht? - Was für eine FB Version hast du?
6) Man zeichnet in einer Do...Loop schleife, und malt nur neu, was auch neu gezeichnet wird (If Hintergrund_Anders then Malen()!) _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
King-01 gesperrt

Anmeldungsdatum: 26.02.2007 Beiträge: 351
|
Verfasst am: 27.08.2007, 19:18 Titel: |
|
|
Ich hab version 0.18b oder so. kp.
Zitat: | Code: | glClear GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT |
|
so hab ichs ja gemeint.
Aber das geht irgentwie jetzt wieder
na egal. sreensync geht aber nicht. da steht: variable not declared, screensync in 'screensync'.
wenn ich das gl_color_buffer_bit hinzufüge wirds normal angezeigt, auser, dass die alten quadrate jetzt verschwinden. _________________ [quote="IRC"](22:41:56)<PMedia>Jojo, hats nen Grund warum wir chatten obwohl du grad neben mir sitzt?
...
(23:00:59)<PMedia>USB war erst als Waffe geplant[/quote] |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
King-01 gesperrt

Anmeldungsdatum: 26.02.2007 Beiträge: 351
|
Verfasst am: 27.08.2007, 19:38 Titel: |
|
|
Ups. Bei mir hieß das Sreensync
Zitat: | Man zeichnet in einer Do...Loop schleife, und malt nur neu, was auch neu gezeichnet wird (If Hintergrund_Anders then Malen()!) |
wie meinst du das?
mein code sieht jetzt so aus:
Code: | #include once "GL/gl.bi"
#include once "GL/glu.bi"
const X = 1280
const Y = 1024
const depth = 32
const fullscreen = &h1
screenres X,Y,depth,,&h2 OR fullscreen
glMatrixMode(GL_PROJECTION)
glLoadIdentity
glViewport(0,0,X,Y)
glOrtho(0,X,Y,0,-128,128)
glMatrixMode(GL_MODELVIEW)
glEnable(GL_CULL_FACE)
glCullFace(GL_BACK)
glEnable GL_TEXTURE_2D
glLoadIdentity
glEnable(GL_DEPTH_TEST)
glDepthFunc(GL_LESS)
glEnable(GL_ALPHA_TEST)
glAlphaFunc(GL_GREATER, 0.1)
DIM AS INTEGER x1,y1,x2,y2,x3,y3,x4,y4,xyz
x1=0: y1=50
x2=50: y2=50
x3=50: y3=0
x4=0: y4=0
do
x1=x1+50
y1=y1+50
x2=x2+50
y2=y2+50
x3=x3+50
y3=y3+50
x4=x4+50
y4=y4+50
glClear GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT
glBegin GL_QUADS
glVertex2i x1, y1
glVertex2i x2, y2
glVertex2i x3, y3
glVertex2i x4, y4
glEnd
glFlush
flip
screensync
loop until inkey$="q"
|
wie soll ichs da machen? _________________ [quote="IRC"](22:41:56)<PMedia>Jojo, hats nen Grund warum wir chatten obwohl du grad neben mir sitzt?
...
(23:00:59)<PMedia>USB war erst als Waffe geplant[/quote] |
|
Nach oben |
|
 |
atari gesperrt
Anmeldungsdatum: 26.08.2007 Beiträge: 144
|
Verfasst am: 27.08.2007, 21:27 Titel: |
|
|
glTranslatef
glRotatef
sind ganz wichtig , ohne dem geht die beziehung zum raumpunkt verloren. |
|
Nach oben |
|
 |
King-01 gesperrt

Anmeldungsdatum: 26.02.2007 Beiträge: 351
|
Verfasst am: 27.08.2007, 21:29 Titel: |
|
|
Ok. Ich werds mal versuchen.
Danke für die Antwort. _________________ [quote="IRC"](22:41:56)<PMedia>Jojo, hats nen Grund warum wir chatten obwohl du grad neben mir sitzt?
...
(23:00:59)<PMedia>USB war erst als Waffe geplant[/quote] |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 27.08.2007, 21:36 Titel: |
|
|
Code: | #INCLUDE ONCE "GL/gl.bi"
#INCLUDE ONCE "GL/glu.bi"
CONST X = 1024
CONST Y = 768
CONST depth = 32
CONST fullscreen = &h0
SCREENRES X,Y,depth,,&h2' OR fullscreen
glMatrixMode(GL_PROJECTION)
glLoadIdentity
glViewport(0,0,X,Y)
glOrtho(0,X,Y,0,-128,128)
glMatrixMode(GL_MODELVIEW)
glEnable(GL_CULL_FACE)
glCullFace(GL_BACK)
glEnable GL_TEXTURE_2D
glLoadIdentity
glEnable(GL_DEPTH_TEST)
glDepthFunc(GL_LESS)
glEnable(GL_ALPHA_TEST)
glAlphaFunc(GL_GREATER, 0.1)
DIM AS INTEGER x1,y1,x2,y2,x3,y3,x4,y4,xyz
x1=0: y1=50
x2=50: y2=50
x3=50: y3=0
x4=0: y4=0
DO
glClear GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT
for xyz = 1 to 30
x1+=50
y1+=50
x2+=50
y2+=50
x3+=50
y3+=50
x4+=50
y4+=50
glBegin GL_QUADS
glVertex2i x1, y1
glVertex2i x2, y2
glVertex2i x3, y3
glVertex2i x4, y4
glEnd
next xyz
glFlush
FLIP
SCREENSYNC
LOOP UNTIL INKEY$=!"\27" |
glTranslatef XBezugspunkt, YBezugspunkt, ZBezugspunkt
VOR glRotatef/glScalef schreiben, ansonsten haben die keine Gültigkeit mehr! _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
King-01 gesperrt

Anmeldungsdatum: 26.02.2007 Beiträge: 351
|
Verfasst am: 27.08.2007, 21:41 Titel: |
|
|
Und wie kann ich diesen würfel in 3D malen?
Und kanns sein, dass man da eine "Kamera" braucht? Wie platziert man die dann? _________________ [quote="IRC"](22:41:56)<PMedia>Jojo, hats nen Grund warum wir chatten obwohl du grad neben mir sitzt?
...
(23:00:59)<PMedia>USB war erst als Waffe geplant[/quote] |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 27.08.2007, 21:42 Titel: |
|
|
OMG.
OGL tut nichts wissen 3D Körper alles du selber macha
OGL beherrscht von sich aus nichts 3D-Körper mäßiges.
Rotierender Würfel siehe XGR-Src (=>hier)
(Ab Zeile 600, bis 653)
Code: | For Rot As Integer = 1 To 1024
glClear GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT
glTranslatef (iResX/2),(iResY/2),1
glscalef 200, 200, 1
glRotatef Rot, (iResX/2), (iResY/2), 0
glBegin GL_QUADS '' Draw A Quad
glColor3f 0.0, 1.0, 0.0 '' Set The Color To Blue
glVertex3f 1.0, 1.0, -1.0 '' Top Right Of The Quad (Top)
glVertex3f -1.0, 1.0, -1.0 '' Top Left Of The Quad (Top)
glVertex3f -1.0, 1.0, 1.0 '' Bottom Left Of The Quad (Top)
glVertex3f 1.0, 1.0, 1.0 '' Bottom Right Of The Quad (Top)
glColor3f 1.0, 0.5, 0.0 '' Set The Color To Orange
glVertex3f 1.0, -1.0, 1.0 '' Top Right Of The Quad (Bottom)
glVertex3f -1.0, -1.0, 1.0 '' Top Left Of The Quad (Bottom)
glVertex3f -1.0, -1.0, -1.0 '' Bottom Left Of The Quad (Bottom)
glVertex3f 1.0, -1.0, -1.0 '' Bottom Right Of The Quad (Bottom)
glColor3f 1.0, 0.0, 0.0 '' Set The Color To Red
glVertex3f 1.0, 1.0, 1.0 '' Top Right Of The Quad (Front)
glVertex3f -1.0, 1.0, 1.0 '' Top Left Of The Quad (Front)
glVertex3f -1.0, -1.0, 1.0 '' Bottom Left Of The Quad (Front)
glVertex3f 1.0, -1.0, 1.0 '' Bottom Right Of The Quad (Front)
glColor3f 1.0, 1.0, 0.0 '' Set The Color To Yellow
glVertex3f 1.0, -1.0, -1.0 '' Top Right Of The Quad (Back)
glVertex3f -1.0, -1.0, -1.0 '' Top Left Of The Quad (Back)
glVertex3f -1.0, 1.0, -1.0 '' Bottom Left Of The Quad (Back)
glVertex3f 1.0, 1.0, -1.0 '' Bottom Right Of The Quad (Back)
glColor3f 0.0, 0.0, 1.0 '' Set The Color To Blue
glVertex3f -1.0, 1.0, 1.0 '' Top Right Of The Quad (Left)
glVertex3f -1.0, 1.0, -1.0 '' Top Left Of The Quad (Left)
glVertex3f -1.0, -1.0, -1.0 '' Bottom Left Of The Quad (Left)
glVertex3f -1.0, -1.0, 1.0 '' Bottom Right Of The Quad (Left)
glColor3f 1.0, 0.0, 1.0 '' Set The Color To Violet
glVertex3f 1.0, 1.0, -1.0 '' Top Right Of The Quad (Right)
glVertex3f 1.0, 1.0, 1.0 '' Top Left Of The Quad (Right)
glVertex3f 1.0, -1.0, 1.0 '' Bottom Left Of The Quad (Right)
glVertex3f 1.0, -1.0, -1.0 '' Bottom Right Of The Quad (Right)
glEnd '' Done Drawing The Quad
glLoadIdentity
glFlush
Flip
Next |
_________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 27.08.2007, 22:01 Titel: |
|
|
[OT]
Zu deinen Kommentaren:
Nicht jedes Wort wird immer wieder groß geschrieben, eigentlich nur ein Satzanfang sowie Eigennamen. Zudem meinst du wohl eher "Cube" statt "Quad".
[/OT]
@King01:
Hast du dir schonmal konkret Tutorials zur OpenGL-Programmierung angeschaut? _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
King-01 gesperrt

Anmeldungsdatum: 26.02.2007 Beiträge: 351
|
Verfasst am: 27.08.2007, 22:05 Titel: |
|
|
ja das von stormy. aber das ist für 2d-programmierung. _________________ [quote="IRC"](22:41:56)<PMedia>Jojo, hats nen Grund warum wir chatten obwohl du grad neben mir sitzt?
...
(23:00:59)<PMedia>USB war erst als Waffe geplant[/quote] |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 27.08.2007, 22:07 Titel: |
|
|
Mao hat Folgendes geschrieben: | [OT]
Zu deinen Kommentaren:
Nicht jedes Wort wird immer wieder groß geschrieben, eigentlich nur ein Satzanfang sowie Eigennamen. Zudem meinst du wohl eher "Cube" statt "Quad".
[/OT] |
Die kommentare sind nicht von mir
Das ist ein übersetzter c-src aus den nehe tuts  _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 27.08.2007, 22:08 Titel: |
|
|
Dann will ich Dir mal im Examples Ordner die 'OG' Beispiele ans Herz legen und ganz besonders den Unterordner 'NeHe' !!! _________________
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 27.08.2007, 22:13 Titel: |
|
|
Du warst net gemeint.
Ich bin jedoch weiterhin der Meinung, dass ich mit den Kommentaren richtig liege.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
atari gesperrt
Anmeldungsdatum: 26.08.2007 Beiträge: 144
|
Verfasst am: 28.08.2007, 13:44 Titel: |
|
|
Zitat: |
VOR glRotatef/glScalef schreiben, ansonsten haben die keine Gültigkeit mehr!
|
doch......mit "glPushMatrix und glPopMatrix", sind auch sehr wichtig für die unabhängigkeit untereinander.
ohne wird beim neuen zeichnen für das gesamte bild der raumpunkt verschoben, mit wird nur der raumpunkt vom einzelnen objekt angesprochen.
wenn du das nicht gelernt hast, wirst du in der bewegung und drehung ein chaos erleben.
die camera musst du mit sinus und cosinus selber hinbuchssieren. die kamera ist nichts weiter als der augpunkt.
mfg |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 28.08.2007, 14:28 Titel: |
|
|
Jaa, jedoch verwirren die einen Anfänger mehr als das sie nützlich sind! Ich habe schon ein paar Sachen mit OGL gemacht, diese Befehle habe ich bis jetzt jedoch nie gebraucht!
Die Kamera habe ich bis jetzt auch noch nie verschoben! Immer nur die Matrix  _________________ If hilfreicher_Beitrag then klick(location.here)
Klick |
|
Nach oben |
|
 |
atari gesperrt
Anmeldungsdatum: 26.08.2007 Beiträge: 144
|
Verfasst am: 28.08.2007, 16:19 Titel: |
|
|
Zitat: |
Jaa, jedoch verwirren die einen Anfänger mehr als das sie nützlich sind!
|
kann man alles lernen. dieses grundwerkzeug braucht man , sonst kann man die unabhängige bewegung vergessen !
mfg |
|
Nach oben |
|
 |
atari gesperrt
Anmeldungsdatum: 26.08.2007 Beiträge: 144
|
Verfasst am: 28.08.2007, 16:23 Titel: |
|
|
Zitat: |
Die Kamera habe ich bis jetzt auch noch nie verschoben! Immer nur die Matrix
|
die kamera gibt es ja auch nicht, das verändern(bewegen) der matrix ist das verändern des blickwinkels.
mfg |
|
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.
|
|