Forum | | | | Andreas Gaida | Hi! chez mir verursacht glEnableClientState dans liaison avec ~GL_NORMAL_ARRAY une Program absturz dans XProfan sowie aussi avec Profan2CPP. Au cours de qui anderen Arrays sich sans Probleme aktivieren laisser pouvoir cette Ärger quoi très tant pis ist weil dans liaison avec glVertexPointer et glDrawArrays ist il très vite chez zeichnen vieler Objekte. je hoffe es peux mir einer aider chez dem Problem.
si im Beispiel Code dans qui Procedure DrawGLScene qui oGL(glEnableClientState,$8075) aktiviert wird stürzt cela Programme tout de suite chez erreichen qui lieu ab. comme Anhang habe je une Vollständigen Quellcode avec obj Dossier angehängt .cela Programme liest qui obj Dossier un et stellt qui Vertex dar ,qui Problem lieu pour qui Normalen ist encore auskommentiert. Beim aktivieren cette lieu dans qui proc DrawGLScene Stürzt cela Programme ab . Pour Aider wäre je très reconnaissant. KompilierenMarqueSéparation
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 es une Beispielcode eines anderen Herstellers z.B. dans C ou bien Pascal? Es pourrait son dass cela Aktivieren eines Normale-Arrays à anderer Stelle aufgerufen volonté muss. Erfahrung avec cela habe je cependant malheureusement pas. |
| | | | |
| | Andreas Gaida | C Beispiel: 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 [...]
Beispiel 2 aus anderer source : 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! peut-être devrait Du Dir la fois xpse angewöhnen.
Hab la fois avec {$debug} Deinen Code durchlaufen et c'est anders comme Du dessus sagst - cela Programme stürzt à anderer Stelle ab! ici qui Auszug aus dem xpsedebugmodus pour Dein Programme, qui dernier la ligne ist qui la ligne quelle wirklich zum Absturz führt: KompilierenMarqueSéparationREM ---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&)
|
| | | | |
| | | Nachtrag: Im Übrigen müsstest Du ensuite aussi pas alle Konstanten définir - il y a bereits alle défini. Du könntest simple juste qui Konstantenbezeichnung tippen. |
| | | | |
| | Andreas Gaida | chez mir stürzt es chez : KompilierenMarqueSéparation ab .avec Windowtitle bekomme je jusqu'à dahin encore une ausgabe après pas plus.
si oGL(glNormalPointer,3,$140A,0,vertex_NF4#) Normale Array définir $140A = ~GL_DOUBLE auskommentiert ist stürzt es chez glDrawArrays ab sonst chez glNormalPointer hatte beide befehle im beispiel auskommentiert.
wobei je pas verstehe wieso ?
Habe qui Konstanten pas verwendet weil mir Profan2CPP qui pas angenommen hat. |
| | | Athlon X2 4800 , 2GB Ram , GeForce 7800GT Windows XP Pro , XProfan 10 und 11 , Profan2Cpp 1.6b | 01.06.2007 ▲ |
| |
| | | Windowttitle ist imaginable ungeeignet zum debuggen - là un sendmessage gesendet wird. Du wirst avec cela alors plan pas toujours qui wirkliche Absturzstelle trouver. mais si Du dem Windowtitle plus Vertrauen schenkst comme dem echten Debugoutput des xpse ensuite volonté wir aneinander vorbei reden doit - hiernach peux je ensuite mais pas plus aider.
si Du toutefois mon Vermutung écouter vouloir: là glDrawArrays abstürzt wird cela Array faux befüllt son.
Habe qui Konstanten pas verwendet weil mir Profan2CPP qui pas angenommen hat.
qui avec XPSE arbeitet hat solche Probleme pas. il y a sogar une extra commutateur {$cpp}. |
| | | | |
| | Andreas Gaida | je crois dir oui mais j'ai im quelltext 2 zeilen ausdokummentiert si beide aktiv sommes stürtzt es déjà chez den glVertexPointer befehl ab es stürzt aussi ab si glDrawArrays ausdokummentiert wird quoi vers une falsche bestückung des befehls spricht ou bien suis je là tellement sur dem holzweg
cette code devrait früher abstürzen et si homme glDrawArrays ausdokummentiert stürtzt il quand même ab
Könntest du cette partie dans cela Beispiel insérer et es nochmal debugen ? KompilierenMarqueSéparation
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 ▲ |
| |
| | | pourquoi tust Du es pas simple selbst?
Gekürzter Auszug - unteres Ende ist Programmabbruch: KompilierenMarqueSéparationOGL(*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 | merci belle . Dachte mir jusqu'à je cela avec dem debugen sur elle habe serait länger dauern et so siehste aussi juste quoi je mon . si je cela richtig vois ist es alors doch qui glNormalPointer befehl qui alles stopt .
la hâte Du ou bien quelqu'un anders une concept wieso qui spinnt es wird wohl pas à OpenGL selber liegenoder wohin fais je une blöden faute chez.
Ansonsten nochmals viellen Dank pour qui Aider.
MfG Andreas |
| | | Athlon X2 4800 , 2GB Ram , GeForce 7800GT Windows XP Pro , XProfan 10 und 11 , Profan2Cpp 1.6b | 01.06.2007 ▲ |
| |
| | | Na il y a une Grund pour - qui données qui Du übergibst sommes dans falscher Struktur, Du wirst donc simple seulement une solchen de Dir beschriebenen blöden faute faire. *g* |
| | | | |
| | Andreas Gaida | ici habe je qui données pour qui Normalen dans qui gleiche Struktur gebracht comment qui qui Vertex données mais qui Befehl stürzt toujours ab . Habe qui selben données comme Normale verwendet comment pour cela Rechteck sollte mais pas cela Programme zum absturz apporter hösten merkwürdig air mais qui formatierung ist qui gleiche comment vous chez zeichnen qui données funktioniert. données volonté dans qui daten_init initialisiert.
alors je vais aussi meisten en aus cela qui faute chez mir liegt mais dans diesem le cas fange je à lente daran trop zweifeln. Währe mais quand même très froh par-dessus si on mir une faute aufzeigen pourrait . KompilierenMarqueSéparationDeclare 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 ▲ |
| |
|
répondreOptions du sujet | 3.894 Views |
Themeninformationencet Thema hat 3 participant: |