original opengl2 open library for descargar opengl opengl-4 vao

opengl2 - ¿Cuáles son las ubicaciones de atributo para la tubería de función fija en el perfil central de OpenGL 4.0++?



opengl windows 7 (1)

Fuera de los controladores de NVIDIA, esto no funciona (de manera confiable). Los controladores compatibles solo alias glVertexPointer (...) para atribuir el slot 0 . NV en su sabiduría infinita ideó un esquema estándar no estándar hace muchos años donde aliason todos los punteros de función fija a ciertas ubicaciones de atributos, pero no sé si los nuevos controladores NV soportan esto (sinceramente, nunca me he preocupado lo suficiente como para probar , es una mala práctica). Es posible que aún pueda encontrar la documentación de NV para sus asignaciones de alias, pero no está beneficiando a nadie al aprovechar su comportamiento no estándar.

Mientras que otros controladores también pueden aliar los punteros de función fija a ubicaciones genéricas de atributos de vértices, no existe documentación para sus asignaciones. A diferencia de NV, no confiaría en que la asignación no cambie entre versiones de controladores, hardware o plataforma. De hecho, incluso con el uso de controladores NV no debe aprovechar esto: su objetivo era promover el soporte heredado y no como una característica utilizada para el nuevo software.

En gl_Color gl_Normal , gl_MultiTexCoord0...7 atributos de vértices genéricos o use un perfil de compatibilidad y una versión de GLSL que aún admita las variables preestablecidas que están específicamente diseñadas para obtener datos de vértices de función fija (por ejemplo, gl_Normal , gl_MultiTexCoord0...7 , gl_MultiTexCoord0...7 , ...). Pero no mezcles y combinas tanto como lo describes.

Tómese también un tiempo para revisar glGetPointerv (...) . Si desea obtener información sobre los punteros de función fija fuera de GLSL, esta es la forma correcta de hacerlo. No confíe en el alias de atributos de vértices, porque el concepto de ubicaciones de atributos es fundamentalmente una función de canalización programable. Ni siquiera existía en OpenGL no extendido antes de 2.0 (se introdujo con el lenguaje ensamblador del Programa ARB Vertex y se promocionó al núcleo con GLSL).

Actualizar:

Si bien sigo desaconsejando encarecidamente el uso de esta información, pude encontrar exactamente lo que quería:

Notas de la versión para NVIDIA OpenGL Shading Language Support - 9 de noviembre de 2006 - págs. 7-8

Alias ​​de atributo de vértice

GLSL intenta eliminar el aliasing de atributos de vértice, pero esto es parte integral del enfoque de hardware de NVIDIA y es necesario para mantener la compatibilidad con las aplicaciones OpenGL existentes en las que confían los clientes de NVIDIA.

Por lo tanto, la implementación de GLSL de NVIDIA no permite que los atributos de vértice incorporados colisionen con los atributos de vértices genéricos que se asignan a un índice de atributo de vértice particular con glBindAttribLocation . Por ejemplo, no debe usar gl_Normal (un atributo de vértice incorporado) y también usar glBindAttribLocation para vincular un atributo de vértice genérico denominado "whatever" al atributo de vértice índice 2 porque gl_Normal aliases al índice 2 .

En caso de que se lo pregunte, esto también se describe en la Tabla X.1 de la especificación de la extensión del Programa ARB Vertex . La única razón por la que mencioné NV específicamente es porque eligieron reutilizar el aliasing en GLSL mientras que las implementaciones compatibles de otros proveedores solo glVertexPointer (...) el primer alias ( glVertexPointer (...) a 0 ) en GLSL.

Me gustaría saber las ubicaciones de los atributos dentro de la tubería fija (sin sombreador adjunto) para:

glVertex = 0 glColor = 3 glNormal = ? glTexCoord = ? glMultiTexCoord 0..7 = ? glSecondaryColor = ? glFog = ?

Empíricamente encontré las ubicaciones Vertex y Color primario, pero aún así sería bueno conocerlas todas.

Si desea saber por qué, entonces por razones de compatibilidad e incluso para la depuración de GLSL (solo para ver si paso los datos correctos para corregir las ubicaciones cuando el sombreador aún no funciona) y así sucesivamente ...