Español
Foro

glEnableClientState XProfan Choque en ~GL_NORMAL_ARRAY

 

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

35 kB
Hochgeladen:01.06.2007
Ladeanzahl33
Descargar
 
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.
 
01.06.2007  
 




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ón
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  
 



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




Andreas
Gaida
en me stürzt lo en :
KompilierenMarcaSeparación
oGL(glNormalPointer,3,$140A,0,vertex_NF4#)
>

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




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




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ón
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  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

3.918 Views

Untitledvor 0 min.

Themeninformationen

Dieses Thema ha 3 subscriber:

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


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie