Foro | | | | Andreas Gaida | Hi! En me verursacht glEnableClientState en verbindung con ~GL_NORMAL_ARRAY una Program absturz en XProfan sowie auch con Profano2CPP. Während el otro Arrays se sin Problemas aktivieren dejar macht dieser Ärger qué muy schade es porque en verbindung con glVertexPointer y glDrawArrays es él muy rápidamente en dibujar vieler Objetos. Yo hoffe lo kann me uno Helfen en el Problema.
Wenn en el Ejemplo Code en el Procedure DrawGLScene el oGL(glEnableClientState,$8075) aktiviert se stürzt el Programa inmediatamente en erreichen el lugar de. como Anhang Yo una Vollständigen Quellcode con obj Expediente angehängt .Das Programa liest el obj Expediente una y stellt el Vertex dar ,el Problema lugar para el Normalen es todavía auskommentiert. Beim aktivieren dieser lugar en el proc DrawGLScene Stürzt el Programa de . Für Ayuda wäre Yo muy Dankbar. KompilierenMarcaSeparación
proc DrawGLScene
oGL(Clear)
oGL(Move, 0,-0.2, -1.0)
--------------------- Vierecke zeichnen -----------------------------------------------
oGL(glEnableClientState,$8075) Normale Array aktivieren $8075 = ~GL_NORMAL_ARRAY
oGL(glEnableClientState,$8074) Vertex Array aktivieren $8074 = ~GL_VERTEX_ARRAY
oGL(glNormalPointer,3,$140A,0,vertex_NF4#) Normale Array definieren $140A = ~GL_DOUBLE
oGL(glVertexPointer,3,$140A,0,vertex_VF4#) Vertex Array definieren
oGL(glDrawArrays,~GL_QUADS, 0 ,zähler_VF4&) Vertex Array zeichnen
oGL(glDisableClientState,$8074) glDisableClientState
oGL(glDisableClientState,$8075) Normale Array deaktivieren
--------------------- Dreicke zeichnen -----------------------------------------------
oGL(glEnableClientState,$8075) Normale Array aktivieren $8075
oGL(glEnableClientState,$8074) Vertex Array aktivieren $8074
oGL(glNormalPointer,3,$140A,0,vertex_NF3#) Normale Array definieren
oGL(glVertexPointer,3,$140A,0,vertex_VF3#) Vertex Array definieren
oGL(glDrawArrays,~GL_TRIANGLES, 0 ,zähler_VF3&) Vertex Array zeichnen
oGL(glDisableClientState,$8074) Vertex Array deaktivieren
oGL(glDisableClientState,$8075) Normale Array deaktivieren
---------------------------------------------------------------------------------------
oGL(Show)
GL_POINTS, GL_LINE_STRIP, GL_LINE_LOOP, GL_LINES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_TRIANGLES, GL_QUAD_STRIP, GL_QUADS, und GL_POLYGON.
ENDPROC
MfG Andreas |
| | | Athlon X2 4800 , 2GB Ram , GeForce 7800GT Windows XP Pro , XProfan 10 und 11 , Profan2Cpp 1.6b | 01.06.2007 ▲ |
| |
| | | Gibt lo una Beispielcode uno otro Herstellers z.B. en C oder Pascal? Lo podría ser dass el Aktivieren uno Normale-Arrays a otro Punto aufgerufen voluntad muss. Erfahrung así Yo sin embargo por desgracia, no. |
| | | | |
| | Andreas Gaida | C Ejemplo: glEnableClientState(GL_COLOR_ARRAY); glEnableClientState(GL_TEXTURE_COORD_ARRAY); glEnableClientState(GL_NORMAL_ARRAY); glEnableClientState(GL_VERTEX_ARRAY);
glColorPointer(3, GL_FLOAT, 0, color); glTexCoordPointer(2, GL_FLOAT, 0, texcoord); glNormalPointer(3, GL_FLOAT, 0, normal); glVertexPointer(3, GL_FLOAT, 0, vertex);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, all_indices);
Code de [...]
Ejemplo 2 de otro Quelle : glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_NORMAL_ARRAY);
glVertexPointer(vcoordPerVertex,type,stride,vpointer); glNormalPointer(ncoordPerVertex,type,stride,npointer); glColorPointer(ccoordPerVertex,type,stride,cpointer); glTexCoordPointer(tcoordPerVertex,type,stride,tpointer);
glDrawArrays(geoMode, first, count); |
| | | Athlon X2 4800 , 2GB Ram , GeForce 7800GT Windows XP Pro , XProfan 10 und 11 , Profan2Cpp 1.6b | 01.06.2007 ▲ |
| |
| | | Tjah! Tal vez solltest Usted Dir veces xpse angewöhnen.
Hab veces con {$debug} Su código durchlaufen y es anders como Usted oben sagst - el Programa stürzt a otro Punto de! Hier el Auszug de el xpsedebugmodus para Su Programa, el letzte Línea Es el Línea welche wirklich para Choque führt: KompilierenMarcaSeparaciónREM ---FILE---
CLS
DATEN_INIT
PROCEED PROCEDURE { proc DATEN_INIT }/* LINE:32 {
DIM VERTEX_P# ,240000
DIM VERTEX_N# ,240000
DIM VERTEX_T# ,160000
DIM VERTEX_VF3#,120000
DIM VERTEX_VF4#,120000
DIM VERTEX_NF3#,120000
DIM VERTEX_NF4#,120000
DIM QUAD_A# ,120000
}
LADEN *test.obj*
PROCEED PROCEDURE { proc LADEN } /* LINE:122 {
DECLARE AB$
IF { IF @FILEEXISTS(DATEI$) } /* LINE:125 {
WINDOWTITLE *Lade OBJ Datei xxx*
...
WINDOWTITLE *Geladen *
}
}
OGL(*Init*, %HWND, 0, 0, 0, 1)
@SET(*oGLDepth*, 1000)
SETTIMER 20
WHILENOT { WHILENOT ENDE% } /* LINE:11 {
WAITINPUT
DRAWGLSCENE
PROCEED PROCEDURE { proc DRAWGLSCENE } /* LINE:16 {
OGL(*Clear*)
OGL(*Move*, 0,-0.2, -1.0)
OGL(*glEnableClientState*,$8075)
OGL(*glEnableClientState*,$8074)
OGL(*glVertexPointer*,3,$140A,0,VERTEX_VF4#)
OGL(*glDrawArr , 0 ,ZäHLER_VF4&)
|
| | | | |
| | | Apéndice: Im Übrigen müsstest Usted entonces auch no todos Konstanten definieren - lo son ya todos definiert. Usted könntest simplemente igual el Konstantenbezeichnung tippen. |
| | | | |
| | Andreas Gaida | en me stürzt lo en : KompilierenMarcaSeparación de .Mit Windowtitle bekomme Yo a dahin ni ausgabe danach no mehr.
si oGL(glNormalPointer,3,$140A,0,vertex_NF4#) Normale Array definieren $140A = ~GL_DOUBLE auskommentiert es stürzt lo en glDrawArrays de sonst en glNormalPointer hatte beide befehle en el beispiel auskommentiert.
wobei Yo no verstehe wieso ?
Posesiones el Konstanten no verwendet porque me Profano2CPP el no angenommen ha. |
| | | Athlon X2 4800 , 2GB Ram , GeForce 7800GT Windows XP Pro , XProfan 10 und 11 , Profan2Cpp 1.6b | 01.06.2007 ▲ |
| |
| | | Windowttitle es denkbar ungeeignet para debuggen - como una sendmessage gesendet se. Usted wirst así also eben no siempre el wirkliche Absturzstelle encontrar. Aber si el Windowtitle mehr Vertrauen schenkst como el echten Debugoutput des xpse entonces voluntad wir aneinander vorbei reden necesario - hiernach kann Yo entonces pero no mehr helfen.
Si usted todavía mi Vermutung hören möchtest: Como glDrawArrays accidentes se el Array falso befüllt ser.
Posesiones el Konstanten no verwendet porque me Profano2CPP el no angenommen ha.
Wer con XPSE arbeitet ha solche Problemas no. Lo son incluso una extra Schalter {$cpp}. |
| | | | |
| | Andreas Gaida | Yo glaube dir sí pero yo habe en el quelltext 2 zeilen ausdokummentiert si beide aktiv son stürtzt lo ya en el glVertexPointer befehl de lo stürzt auch de si glDrawArrays ausdokummentiert se qué gegen una falsche bestückung des befehls spricht oder bin Yo como así muy en el holzweg
dieser code debería früher abstürzen y si mann glDrawArrays ausdokummentiert stürtzt él trotzdem de
Könntest du esta teil en el Ejemplo einfügen y lo otra vez debugen ? KompilierenMarcaSeparación
proc DrawGLScene
oGL(Clear)
oGL(Move, 0,-0.2, -1.0)
--------------------- Vierecke zeichnen -----------------------------------------------
oGL(glEnableClientState,$8075) Normale Array aktivieren $8075 = ~GL_NORMAL_ARRAY
oGL(glEnableClientState,$8074) Vertex Array aktivieren $8074 = ~GL_VERTEX_ARRAY
oGL(glNormalPointer,3,$140A,0,vertex_NF4#) Normale Array definieren $140A = ~GL_DOUBLE
oGL(glVertexPointer,3,$140A,0,vertex_VF4#) Vertex Array definieren
oGL(glDrawArrays,~GL_QUADS, 0 ,zähler_VF4&) Vertex Array zeichnen
oGL(glDisableClientState,$8074) glDisableClientState
oGL(glDisableClientState,$8075) Normale Array deaktivieren
--------------------- Dreicke zeichnen -----------------------------------------------
oGL(glEnableClientState,$8075) Normale Array aktivieren $8075
oGL(glEnableClientState,$8074) Vertex Array aktivieren $8074
oGL(glNormalPointer,3,$140A,0,vertex_NF3#) Normale Array definieren
oGL(glVertexPointer,3,$140A,0,vertex_VF3#) Vertex Array definieren
oGL(glDrawArrays,~GL_TRIANGLES, 0 ,zähler_VF3&) Vertex Array zeichnen
oGL(glDisableClientState,$8074) Vertex Array deaktivieren
oGL(glDisableClientState,$8075) Normale Array deaktivieren
---------------------------------------------------------------------------------------
oGL(Show)
ENDPROC
|
| | | Athlon X2 4800 , 2GB Ram , GeForce 7800GT Windows XP Pro , XProfan 10 und 11 , Profan2Cpp 1.6b | 01.06.2007 ▲ |
| |
| | | ¿Por qué tust Usted no simplemente incluso?
Gekürzter Auszug - unteres Ende es Programmabbruch: KompilierenMarcaSeparaciónOGL(*Init*, %HWND, 0, 0, 0, 1)
@SET(*oGLDepth*, 1000)
SETTIMER 20
WHILENOT { WHILENOT ENDE% }/* LINE:11 {
WAITINPUT
DRAWGLSCENE
PROCEED PROCEDURE { proc DRAWGLSCENE } /* LINE:16 {
OGL(*Clear*)
OGL(*Move*, 0,-0.2, -1.0)
OGL(*glEnableClientState*,$8075)
OGL(*glEnableClientState*,$8074)
OGL(*glNormalPointer*,3,$140A,0,VERTEX
|
| | | | |
| | Andreas Gaida | Gracias schöne . Dachte me a Yo el con el debugen en él habe sería länger dauern y así siehste auch igual Yo mi . Wenn Yo el correcto sehe es also doch el glNormalPointer befehl el alles stopt .
Hast Usted oder alguien anders una Concepto wieso el spinnt lo probablemente no a OpenGL selber liegenoder wo mache Soy un blöden Fehler en.
Ansonsten nochmals viellen Dank para el Ayuda.
MfG Andreas |
| | | Athlon X2 4800 , 2GB Ram , GeForce 7800GT Windows XP Pro , XProfan 10 und 11 , Profan2Cpp 1.6b | 01.06.2007 ▲ |
| |
| | | Na lo son una Grund dafür - el Daten el Usted übergibst son en falscher Struktur, Usted wirst demnach simplemente sólo una solchen de Usted beschriebenen blöden Fehler hacer. *g* |
| | | | |
| | Andreas Gaida | Hier Yo el Daten para el Normalen en el gleiche Struktur gebracht como el Vertex Daten pero la Befehl stürzt siempre todavía de . Posesiones el selben Daten como Normale verwendet como para el Rechteck debería pero no el Programa para absturz bringen hösten merkwürdig aussehen aber el formatierung Es el gleiche como ellos en dibujar el Daten funktioniert. Daten voluntad en el daten_init initialisiert.
Also Yo gehe auch meisten su de el el Fehler en me liegt aber en diesem Fall fange Yo a langsam daran a zweifeln. Währe aber trotzdem muy froh darüber si uno me una Fehler aufzeigen podría . KompilierenMarcaSeparaciónDeclare Dateiname$,Datei$,ab$,rückgabe&,ende%
Declare vertex_P#,vertex_N#,vertex_T#,vertex_VF3#,vertex_VF4#,quad_A#
Declare zähler_P&,zähler_N&,zähler_T&,zähler_F&,zähler_VF3&,zähler_VF4&,vertex_NF3#,vertex_NF4#,zähler_NF4&
cls
daten_init
oGL(Init, %hWnd, 0, 0, 0, 1)
@Set(oGLDepth, 1000)
setTimer 20 max. 50 Frames /sek.
WhileNot ende%
WaitInput
DrawGLScene
EndWhile
ende_init
proc DrawGLScene
oGL(Clear)
oGL(Move, 0,-0.0, -5.0)
--------------------- Vierecke zeichnen -----------------------------------------------
oGL(glEnableClientState,~GL_NORMAL_ARRAY) Normale Array aktivieren $8075 = ~GL_NORMAL_ARRAY
oGL(glEnableClientState,~GL_VERTEX_ARRAY) Vertex Array aktivieren $8074 = ~GL_VERTEX_ARRAY
oGL(glNormalPointer,3,~GL_DOUBLE,0,vertex_NF4#) Normale Array definieren $140A = ~GL_DOUBLE
oGL(glVertexPointer,3,~GL_DOUBLE,0,vertex_NF4#) Vertex Array definieren
oGL(glDrawArrays,~GL_QUADS, 0 ,zähler_VF4&) Vertex Array zeichnen
oGL(glDisableClientState,$8074) glDisableClientState
oGL(glDisableClientState,$8075) Normale Array deaktivieren
oGL(Show)
endproc
proc daten_init
Dim vertex_P# ,240000
Dim vertex_N# ,240000
Dim vertex_T# ,160000
Dim vertex_VF3#,120000
Dim vertex_VF4#,120000
Dim vertex_NF3#,120000
Dim vertex_NF4#,120000
Dim quad_A# ,120000
-------Vertex Array wird gefüllt ein Viereck--------------
Float vertex_VF4#, 0 = 0.0
Float vertex_VF4#, 8 = 1.0
Float vertex_VF4#, 16 = 1.0
Float vertex_VF4#, 24 = 0.0
Float vertex_VF4#, 32 = 0.0
Float vertex_VF4#, 40 = 1.0
Float vertex_VF4#, 48 = 1.0
Float vertex_VF4#, 56 = 0.0
Float vertex_VF4#, 64 = 1.0
Float vertex_VF4#, 72 = 1.0
Float vertex_VF4#, 80 = 1.0
Float vertex_VF4#, 88 = 1.0
zähler_VF4& = 4
-------Normal Vertex Array wird gefüllt---------------------
Float vertex_NF4#, 0 = 0.0
Float vertex_NF4#, 8 = 1.0
Float vertex_NF4#, 16 = 1.0
Float vertex_NF4#, 24 = 0.0
Float vertex_NF4#, 32 = 0.0
Float vertex_NF4#, 40 = 1.0
Float vertex_NF4#, 48 = 1.0
Float vertex_NF4#, 56 = 0.0
Float vertex_NF4#, 64 = 1.0
Float vertex_NF4#, 72 = 1.0
Float vertex_NF4#, 80 = 1.0
Float vertex_NF4#, 88 = 1.0
zähler_NF4& = 4
endproc
proc ende_init
Dispose vertex_P#
Dispose vertex_N#
Dispose vertex_T#
Dispose vertex_VF3#
Dispose vertex_VF4#
Dispose vertex_NF3#
Dispose vertex_NF4#
Dispose_A#
ENDPROC
|
| | | Athlon X2 4800 , 2GB Ram , GeForce 7800GT Windows XP Pro , XProfan 10 und 11 , Profan2Cpp 1.6b | 01.06.2007 ▲ |
| |
|
RespuestaThemeninformationenDieses Thema ha 3 subscriber: |