Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Test De Libreria

Iniciado por zupervaca, 03 de Octubre de 2005, 02:08:26 AM

« anterior - próximo »

_Grey

 
Citartendre que mirar todos los ejemplos de ati para encontrar el posible fallo, pero me huele que es por algo de las matrices de proyeccion, el rollo va ser por la ultima columna o la ultima fila que en nvidia y ati van a estar alreves

Creo que es en DirectX y OpenGL donde estan al reves la una respecto la otra por que uno usa vectores fila y la otra vectores columna, corregirme si me equivoco  :P

----------------------------------------------
Realmente yo solo me planteo 2 posibles errores, las extensiones, como hace tiempo no uso OpenGL (y no toque las ext. ...) no se del cierto que sea eso, por tu insistencia diria que eso esta bien. Lo segundo que veo posible de error son los shaders, en OGL existia un lenguaje de shaders "standard", por que creo que envidia tiraba del suyo... nop???  :ph34r:  :ph34r:  :ph34r:

Saludos.

zupervaca

 si son diferentes, pero solo para las matrices de proyeccion

el problema de las ati la verdad es que aun no se por que es, he estado mirado el codigo de los ejemplos de la web de ati y no veo la diferencia, tendre que seguir mirando por que el ultimo exe de opengl que subi usaba las matrices propias de opengl y fallaba con lo que ya no se que sera

editado: voy a pegar todas las extensiones que uso, pero no creo que sea debido a esto

#define GL_MAXTEXTURES  8
#define GL_COMBINE_EXT  0x8570
#define GL_COMBINE_RGB_EXT 0x8571
#define GL_ARRAY_BUFFER_ARB 0x8892
#define GL_STATIC_DRAW_ARB 0x88E4
#define GL_TEXTURE0_ARB  0x84C0
#define GL_TEXTURE1_ARB  0x84C1
#define GL_TEXTURE2_ARB  0x84C2
#define GL_TEXTURE3_ARB  0x84C3
#define GL_TEXTURE4_ARB  0x84C4
#define GL_TEXTURE5_ARB  0x84C5
#define GL_TEXTURE6_ARB  0x84C6
#define GL_TEXTURE7_ARB  0x84C7
#define GL_COMBINE_ARB  0x8570
#define GL_RGB_SCALE_ARB 0x8573
typedef void (APIENTRY * PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
typedef void (APIENTRY * PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
typedef void (APIENTRY * PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);
typedef void (APIENTRY * PFNGLBUFFERDATAARBPROC) (GLenum target, int size, const GLvoid *data, GLenum usage);
typedef void (APIENTRY * PFNGLACTIVETEXTUREARBPROC) (GLenum target);
typedef void (APIENTRY * PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum target);
#define GL_VERTEX_SHADER_ARB 0x8B31
#define GL_FRAGMENT_SHADER_ARB 0x8B30
typedef unsigned int GLhandleARB;
typedef char GLcharARB;
typedef GLhandleARB (APIENTRY * PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
typedef void (APIENTRY * PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB **string, const GLint *length);
typedef void (APIENTRY * PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
typedef GLhandleARB (APIENTRY * PFNGLCREATEPROGRAMOBJECTARBPROC) ();
typedef void (APIENTRY * PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObject, GLhandleARB obj);
typedef void (APIENTRY * PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
typedef void (APIENTRY * PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
typedef void (APIENTRY * PFNGLDETACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB attachedObj);
typedef void (APIENTRY * PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
typedef GLint (APIENTRY * PFNGLGETUNIFORMLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
typedef void (APIENTRY * PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0);
typedef void (APIENTRY * PFNGLUNIFORM2IARBPROC) (GLint location, GLint v0, GLint v1);
typedef void (APIENTRY * PFNGLUNIFORM3IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2);
typedef void (APIENTRY * PFNGLUNIFORM4IARBPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
typedef void (APIENTRY * PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0);
typedef void (APIENTRY * PFNGLUNIFORM2FARBPROC) (GLint location, GLfloat v0, GLfloat v1);
typedef void (APIENTRY * PFNGLUNIFORM3FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
typedef void (APIENTRY * PFNGLUNIFORM4FARBPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
typedef void (APIENTRY * PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLuint count, GLboolean transpose, const GLfloat *value);

zupervaca

 he subido una nueva version en el que cambio el orden de creacion del shader, los de ati lo hacen a la inversa un poco raro, pero como funciona lo de ellos en ati y lo mio no a cambiarlo :lol:

http://www.davidib.com/test/dibdlltest.rar

_Grey

 Otra vez como la primera, con el cuadradito blanco arriba-derecha y fondo gris, salgo con alt+f4, lastima.

Saludos.

TheAzazel

 Idem.....

pq no empiezas q quitar cosas y digamos que vas de poco a mas?? no me importa que haya un par de exe's y tenga q probarlos todos...asi te podremos decir...en cual la cosa empieza a no verse bien....

zupervaca

 gracias por la ayuda, me parece que acabare haciendo lo que dices TheAzazel, hoy le ha fallado a mi hermano con una tarjeta nvidia en opengl, no veia el contador de fps, pero instalo los ultimos drivers y le funciona ya bien

zupervaca

 he subido otra version, me parece que va ser de esta, pero tampoco me hago muchas ilusiones, pa la piltra que es tardisimo

jazcks

 bueno bueno...  :) la cosa sigue mejorando, ahora ya se ve algo, pero sin textura, ánimo que ya casi lo tienes!

pd. funciona bien lo de moverse



_Grey

 igual que jazcks.

Saludos.

zupervaca

 gracias jacks ahora ya se lo que es!!, pueden ser tres cosas: los shaders no funcionan por algo sobrenatural, no les estoy pasando bien las variables o lo que vi en los ejemplos de ati que no usan ni un glDrawArray que es para pintar del tiron y en cambio si que usan el sistema viejo que era con glVertex pintando vertice por vertice, esto ultimo me da miedo ya que es mucho mas lento que lo otro, sobre todo en ordenadores con pocos mhz

TheAzazel

 Si, a mi ahora me sucede eso mismo... esto va progresando!!

me da en la nariz que esta noche la demo correra bien en openGl jeje

zupervaca

 bueno esta vez la version que he subido crea un log para saber que @#~|@ esta fallando, el log se crea al lado del exe y se llama log.txt como siempre lo subi aqui, he quitado la version de directx que parece que a todos os funcionaba correctamente y asi ahorro unos cuantos kbs en la descarga, yo creo que esta noche tambien lo vere rular ;), en esta version lo mas seguro que no veais nada en pantalla como pasaba antes y es que vuelvo a usar los shaders

Pogacha

 Pentium IV - ATI 9800 PRO

La verdad es que la anterior me daba un cuadrado gris ahora es uno negro ...

A todo esto pregunto, en tu maquina funciona ?  :P

Saludos.

CitarLog creado

glGenBuffersARB: 0x693262f0
glBindBufferARB: 0x693262b0
glBufferDataARB: 0x69326330
glDeleteBuffersARB: 0x693262d0
glActiveTextureARB: 0x69324410
glClientActiveTextureARB: 0x69324430
glCreateShaderObjectARB: 0x693274d0
glShaderSourceARB: 0x693274f0
glCompileShaderARB: 0x69327510
glCreateProgramObjectARB: 0x69327530
glAttachObjectARB: 0x69327550
glLinkProgramARB: 0x69327570
glUseProgramObjectARB: 0x69327590
glDetachObjectARB: 0x693274b0
glDeleteObjectARB: 0x69327470
glGetUniformLocationARB: 0x693278b0
glUniform1iARB: 0x69327650
glUniform2iARB: 0x69327670
glUniform3iARB: 0x69327690
glUniform4iARB: 0x693276b0
glUniform1fARB: 0x693275d0
glUniform2fARB: 0x693275f0
glUniform3fARB: 0x69327610
glUniform4fARB: 0x69327630
glUniformMatrix4fvARB: 0x69327810

[[Program shader (id=-2147483647)
{
   Vertex shader (id=1073741825)[
uniform mat4 mWorldViewProjection;
uniform float tiempo;
void main()
{   
   //gl_Position = ftransform();
   gl_Position = mWorldViewProjection * gl_Vertex;
   gl_TexCoord[0] = gl_MultiTexCoord0;
   gl_TexCoord[1] = gl_MultiTexCoord0 + vec4(tiempo, tiempo*2, 0, 0);
}

], Pixel shader (id=536870913)[
uniform sampler2D texture0, texture1;
void main()
{   
   gl_FragColor = (texture2D(texture0,gl_TexCoord[0]) + texture2D(texture1,gl_TexCoord[1]));
}]]]

[[Program shader (id=-2147483646)
{
   Vertex shader (id=1073741826)[
uniform mat4 g_WorldViewProjection;
uniform float4 g_TextureSize;
uniform float4 g_VertexSize;

void main()
{
   gl_Position = gl_Vertex;
   gl_Position *= vec4(g_VertexSize[2], g_VertexSize[3], 0, 1);
   gl_Position += vec4(g_VertexSize[0], g_VertexSize[1], 0, 0);
   gl_Position *= g_WorldViewProjection;
   
   gl_TexCoord[0] = gl_MultiTexCoord0;
   gl_TexCoord[0] *= vec4(g_TextureSize[2], g_TextureSize[3], 1, 1);
   gl_TexCoord[0] += vec4(g_TextureSize[0], g_TextureSize[1], 0, 0);
}


], Pixel shader (id=536870914)[
uniform sampler2D g_Texture;

void main()
{   
   gl_FragColor = texture2D( g_Texture, gl_TexCoord[0] );
}
]]]

Shader::GetVar(g_WorldViewProjection) = -1
Shader::GetVar(g_TextureSize) = -1
Shader::GetVar(g_VertexSize) = -1
Shader::GetVar(g_Texture) = -1
Shader::GetVar(tiempo) = -1
Shader::GetVar(texture0) = -1
Shader::GetVar(texture1) = -1
Shader::GetVar(mWorldViewProjection) = -1

zupervaca

 si, funciona bien en dx y ogl, en todos los ordenadores que tiene nvidia aparentemente funciona correctamente

por lo que veo los identificadores ya estan erroneos con lo que ya falla en la creacion del propio shader, osea, en la llamada
m_idProgram = glCreateProgramObjectARB(); ya me da un error, ¿tienes los ultimos drivers de la ati instalados? es que si falla aqui no puedo hacer nada por que es una llamada a opengl sin mas, y en las especificaciones del glsl esta llamada es un estandar

por favor comprobar que tengais los ultimos drivers no vaya ser algo de esto

editado: se me olvidaba, voy a explicar un poco como va el log

el primer trozo donde se ven numeros hexadecimales son los punteros obtenidos de la dll de opengl, aparentemente estan bien ya que son parecidos a los mios

el segundo bloque se muestran los identificadores del programa, del vertex shader y del pixel shader (que es lo que veo que ya falla), tambien se muestra lo que mete al shader

en el ultimo bloque son los intentos de obtener las posiciones de las variables, siempre da -1 ya que la creacion del shader ya dio error

_Grey

 Por cierto que he salido con alt+f4, por si importa, ahora el log:

Amd63 3000+ 1GbRam 9800XT

CitarglUniform3iARB: 0x6931e270
glUniform4iARB: 0x6931e290
glUniform1fARB: 0x6931e1b0
glUniform2fARB: 0x6931e1d0
glUniform3fARB: 0x6931e1f0
glUniform4fARB: 0x6931e210
glUniformMatrix4fvARB: 0x6931e3f0

[[Program shader (id=-2147483647)
{
   Vertex shader (id=1073741825)[
uniform mat4 mWorldViewProjection;
uniform float tiempo;
void main()
{   
   //gl_Position = ftransform();
   gl_Position = mWorldViewProjection * gl_Vertex;
   gl_TexCoord[0] = gl_MultiTexCoord0;
   gl_TexCoord[1] = gl_MultiTexCoord0 + vec4(tiempo, tiempo*2, 0, 0);
}

], Pixel shader (id=536870913)[
uniform sampler2D texture0, texture1;
void main()
{   
   gl_FragColor = (texture2D(texture0,gl_TexCoord[0]) + texture2D(texture1,gl_TexCoord[1]));
}]]]

[[Program shader (id=-2147483646)
{
   Vertex shader (id=1073741826)[
uniform mat4 g_WorldViewProjection;
uniform float4 g_TextureSize;
uniform float4 g_VertexSize;

void main()
{
   gl_Position = gl_Vertex;
   gl_Position *= vec4(g_VertexSize[2], g_VertexSize[3], 0, 1);
   gl_Position += vec4(g_VertexSize[0], g_VertexSize[1], 0, 0);
   gl_Position *= g_WorldViewProjection;
   
   gl_TexCoord[0] = gl_MultiTexCoord0;
   gl_TexCoord[0] *= vec4(g_TextureSize[2], g_TextureSize[3], 1, 1);
   gl_TexCoord[0] += vec4(g_TextureSize[0], g_TextureSize[1], 0, 0);
}


], Pixel shader (id=536870914)[
uniform sampler2D g_Texture;

void main()
{   
   gl_FragColor = texture2D( g_Texture, gl_TexCoord[0] );
}
]]]

Shader::GetVar(g_WorldViewProjection) = -1
Shader::GetVar(g_TextureSize) = -1
Shader::GetVar(g_VertexSize) = -1
Shader::GetVar(g_Texture) = -1
Shader::GetVar(tiempo) = -1
Shader::GetVar(texture0) = -1
Shader::GetVar(texture1) = -1
Shader::GetVar(mWorldViewProjection) = -1






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.