Forum | | | | - page 1 - |
| 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 ▲ |
| |
| | | | | - page 1 - |
| | 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 ▲ |
| |
| | | | - page 2 - |
| | | KompilierenMarqueSéparationREM ---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
mais je suis au sommet qui faute steck irgendwo dans dem Befehl OGL(*glNormalPointer*,3,$140A,0,VERTEX_NF4#) suis en überzeugt cela qui Arrays soweit dans ordnung sommes wieso qui Befehl abschmiert je n'en sais rien mais solange cela so ist peux je OpenGl oublier qc ,qui anderen Befehle sommes chez den Datenmengen qui je pour une 3D Animation aus obj dateien faire voulais simple trop paralysé
MfG Andreas |
| | | Athlon X2 4800 , 2GB Ram , GeForce 7800GT Windows XP Pro , XProfan 10 und 11 , Profan2Cpp 1.6b | 01.06.2007 ▲ |
| |
| | RGH | allô Andreas,
je fürchte, tu as qui Microsoft-Aider trop OpenGL pas en détails genug studiert! glNormalPointer hat là une paramètre moins:
[...]
The glNormalPointer function defines à array of normals.
void glNormalPointer( GLenum type, GLsizei stride, const GLvoid *pointer );
Paramètres
type - The data type of each coordinate dans le array using le 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, le normals sont tightly packed dans le array. pointer - A pointer to le first normal dans le array.
Salut 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 je:
So ca va alors: KompilierenMarqueSéparation
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 !
je muss malheureusement zugeben le moi pas avec qui Microsoft hilfe gearbeitet habe mais den Quelcode de C aus dem 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);
quoi sich maintenant malheureusement comme un schwerer faute pour mich erwiesen hat . je werde mich doch lieber sur Microsoft dans Zukunft sortir de. je voudrais mich chez Dir et IF nochmals pour qui Aider bedanken et mich pour qui Umstände qui je 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 ▲ |
| |
| | | Du musst toi aucunement entschuldigen! |
| | | | |
|
répondreOptions du sujet | 3.895 Views |
Themeninformationencet Thema hat 3 participant: |