Foro | | | | - Página 1 - |
| 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 ▲ |
| |
| | | | | - Página 1 - |
| | 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 ▲ |
| |
| | | | - Página 2 - |
| | | KompilierenMarcaSeparaciónREM ---FILE---
CLS
DATEN_INIT
PROCEED PROCEDURE { proc DATEN_INIT }/* LINE:27 {
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
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
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
}
OGL(*Init*, %HWND, 0, 0, 0, 1)
@SET(*oGLDepth*, 1000)
SETTIMER 20
WHILENOT { WHILENOT ENDE% } /* LINE:10 {
WAITINPUT
DRAWGLSCENE
PROCEED PROCEDURE { proc DRAWGLSCENE } /* LINE:15 {
OGL(*Clear*)
OGL(*Move*, 0,-0.0, -5.0)
OGL(*glEnableClientState*,$8075)
OGL(*glEnableClientState*,$8074)
O NormalPointer*,3,$140A,0,VERTEX_NF4#)
|
| | | | |
| | Andreas Gaida | THX
Aber Yo bin al ende el Fehler steck irgendwo en el Befehl OGL(*glNormalPointer*,3,$140A,0,VERTEX_NF4#) Bin su überzeugt el el Arrays soweit en ordnung son wieso el Befehl abschmiert no ahnung aber solange el así es kann Yo OpenGl vergessen ,el otro Befehle son en el Datenmengen el Yo para una 3D Animation de obj dateien hacer quería simplemente a lahm
MfG Andreas |
| | | Athlon X2 4800 , 2GB Ram , GeForce 7800GT Windows XP Pro , XProfan 10 und 11 , Profan2Cpp 1.6b | 01.06.2007 ▲ |
| |
| | RGH | ¡Hola Andreas,
Yo fürchte, Usted hast el Microsoft-Ayuda a OpenGL no ausführlich genug studiert! glNormalPointer ha como una Parámetro weniger:
[...]
The glNormalPointer function defines a array of normals.
void glNormalPointer( GLenum type, GLsizei stride, const GLvoid *pointer );
Parámetros
type - The data type of each coordinate en the array using the following symbolic constants: GL_BYTE, GL_SHORT, GL_INT, GL_FLOAT, and GL_DOUBLE. stride - The byte offset between consecutive normals. When stride is zero, the normals are tightly packed en the array. pointer - A pointer to the first normal en the array.
Saludo Roland |
| | | Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 01.06.2007 ▲ |
| |
| | RGH | Nochmal Yo:
So es also: KompilierenMarcaSeparación
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,~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)
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 01.06.2007 ▲ | |
| |
| | Andreas Gaida | Vielen Dank !
Yo muss desafortunadamente zugeben el Yo no con el Microsoft hilfe gearbeitet habe pero el Quelcode de C de el Internet habe :
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);
qué se ahora desafortunadamente como una schwerer fehler para mich erwiesen ha . Yo voluntad mich doch más bien en Microsoft en Zukunft verlassen. Yo möchte mich con usted y IF nochmals para el Ayuda bedanken y mich para el Umstände el Yo gemacht habe entschuldigen .
MfG Andreas |
| | | Athlon X2 4800 , 2GB Ram , GeForce 7800GT Windows XP Pro , XProfan 10 und 11 , Profan2Cpp 1.6b | 01.06.2007 ▲ |
| |
| | | Usted musst Usted keinesfalls entschuldigen! |
| | | | |
|
RespuestaThemeninformationenDieses Thema ha 3 subscriber: |