Français
Forum

glEnableClientState XProfan Absturz chez ~GL_NORMAL_ARRAY

 

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

35 kB
Hochgeladen:01.06.2007
Downloadcounter33
Download
 
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.
 
01.06.2007  
 




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éparation
REM ---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&)
 
01.06.2007  
 



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.
 
01.06.2007  
 




Andreas
Gaida
chez mir stürzt es chez :
KompilierenMarqueSéparation
oGL(glNormalPointer,3,$140A,0,vertex_NF4#)
>

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}.
 
01.06.2007  
 




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éparation
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(*glNormalPointer*,3,$140A,0,VERTEX
 
01.06.2007  
 




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*
 
01.06.2007  
 




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éparation
Declare 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épondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

3.858 Views

Untitledvor 0 min.

Themeninformationen

cet Thema hat 3 participant:

Andreas Gaida (8x)
iF (8x)
RGH (2x)


Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie