Me interesé en estudiar programación gráfica, por lo que el punto de entrada obvio era aprender OpenGL. Pero al recopilar información dispersa en foros y sitios, parece que una implementación pura de OpenGL se está desvaneciendo, ya que la mayoría de las cosas anteriores a 3.0 están en desuso y citando una revisión en Amazon, "desde 3.0 todo se trata de los sombreadores". Además, de los libros que he visto, parece que solo el soberbio cubre la versión más reciente, pero solo en parte porque una buena parte del libro enseña funciones obsoletas, y hay libros específicamente para GLSL.
Aquí es donde me encontré con mi primer problema, algunos hardwares no son compatibles con GLSL, incluido el portátil con gráficos integrados Intel que había planeado usar. La función
GLuint vertShader = glCreateShader(GL_VERTEX_SHADER);
causa un error de segmentación y, por lo que parece, mi controlador no admite sombreadores
Entonces mi pregunta es, ¿cuál es la viabilidad de hacer un juego solo en OpenGL? ¿Me faltarán buenas características irremplazables del lenguaje de sombreado? ¿Y qué tipo de hardware (viejos gen i3, i5, i7, viejos VGA) puedo esperar para ejecutar un juego con sombreadores correctamente?
Respuestas:
El código de sombreador es definitivamente más claro y más fácil de entender que un desorden de glTexEnv, glTexGen y llamadas de matriz de textura, y tiene la ventaja de que puede expresar cualquier operación matemática más o menos arbitraria al usarlo (lo que no puede hacer con el fijo pipeline: lo que llama "OpenGL puro"). El único inconveniente potencial es que necesita escribir una cierta cantidad de infraestructura de soporte en su código antes de que pueda comenzar a usarlos, mientras que con la antigua forma en que puede sumergirse. Llamo a eso un inconveniente "potencial" porque realmente piensa que te hace preparar las cosas y aprender un poco más de antemano: OpenGL tiene la reputación de ser "fácil" y ocasionalmente ves que las personas se dejan engañar por esto y se sumergen sin saber realmente lo que están haciendo primero,
En cuanto al hardware, puede confiar en casi todo lo lanzado en los últimos 5/6/7 años para tener cierto grado de compatibilidad con sombreadores, pero, en el caso de Intels anteriores (algunas de la serie 9xx), no será GLSL, pero en su lugar serán las extensiones GL_ARB_vertex_program y GL_ARB_fragment_program anteriores . Estos usan un lenguaje de sombreador similar al lenguaje ensamblador, pero, tiempo de confesión, personalmente me gusta mucho. En realidad, es bastante fácil de usar, si carece de algunas características más modernas (como la ramificación) y requiere más líneas de código de sombreador para hacer lo mismo. La infraestructura de soporte requerida en su programa principal para estas extensiones es mucho más ligera que para GLSL también.
Sin embargo, eso no quiere decir que los recomendaría sobre GLSL, pero son una opción que está ahí si realmente necesita ejecutarse en esta clase de hardware y es útil tener en cuenta que existen, lo que me lleva al punto final . ¿Está realmente seguro de que realmente necesita ejecutarse en esta clase de hardware (por ejemplo, en el caso de su computadora portátil, es posible que haya descuidado obtener los puntos de entrada)?
fuente
También se debe tener en cuenta que ya no hay "OpenGL puro".
OpenGL ES 2.0 abandonó todo lo que no es sombreador, y dado que WebGL se basa en él, también solo funciona con sombreadores. OpenGL 3.0 dejó en desuso todas las funciones fijas y 3.1 lo eliminó (en los perfiles principales. La mayoría de las implementaciones admiten perfiles de compatibilidad, pero MacOSX no lo hace para su implementación 3.2).
Por lo tanto, no sugeriría aprender OpenGL sin sombreador.
fuente
Si ha realizado alguna programación en el pasado, será mucho más divertido escribir su propio código de sombreador con GLSL. Originalmente intenté aprender OpenGL de función fija y fue más difícil para mí porque no tenía sentido. Luego intenté aprender GLSL usando el libro naranja y fue mucho más fácil y se hizo más desde entonces. Solo mis 2 centavos.
Definitivamente me gustaría ir a GLSL por el poder de escribir programas para la GPU.
fuente