2010-12-01 7 views
14

He estado trabajando con OpenGL durante aproximadamente un año y he aprendido muchas cosas. Desafortunadamente, la forma en que lo aprendí fue la antigua forma 3.x anterior, es decir, modo inmediato, sombreadores predeterminados, pilas de matriz, etc. Más o menos tengo una idea de lo que ha cambiado desde entonces hasta ahora al mirar las especificaciones de OpenGL, sin embargo No entiendo totalmente algunas de las nuevas formas de hacer las cosas.OpenGL 3.1-4.1 características nuevas y en desuso

Según tengo entendido, se deshicieron de las pilas de la matriz, lo que significa que tienes que hacer un seguimiento de tus propias matrices de transformación, lo que no parece demasiado complicado. También se deshicieron del modo inmediato, lo que significa que ahora necesita usar VBO o VAO (nunca se sabe cuál, tal vez ambos ...) para enviar el píxel/normal/textura, etc. información al programa de sombreado. Realmente no conozco la forma en que funcionan estos objetos, creo que debes poner toda la información en ellos y proporcionar algún tipo de respuesta para mostrar los separadores entre las coordenadas de píxel, normal y de textura. ¿Podría alguien explicar brevemente cómo funciona esto en realidad (o enviarme un enlace que lo explique)? Probé en wikipedia y lo busqué en Google, pero me encontré todavía sin entenderlos del todo.

Otro punto sobre el que me gustaría obtener más información son los sombreadores, ya que nunca los he usado. No voy a preguntar cómo codificarlos ni nada, solo lo que necesita ir allí y lo que OpenGL aún hace por ti. Más específicamente, ¿qué necesitarías hacer en los shaders para obtener un programa de renderizado básico? Sé que necesitas hacer todos los cálculos de ligthing y usar tus matrices para calcular la posición real del vértice. ¿Pero opengl todavía se ocupa de la eliminación de referencias, recorte de línea, relleno de polígonos y otros problemas de nivel inferior, o tiene que codificarlos en los sombreadores (o ni siquiera pertenecen a los sombreadores)?

Respuesta

9

Como el modo inmediato está obsoleto, hacer una aplicación de "triángulo de saludo" es un poco más complicado. Hay un buen tutorial sobre OpenGL moderna aquí:

http://arcsynthesis.org/gltut/

Debe leerlo a fondo. Tenga en cuenta que no utiliza VAO por lo que tendrá que leer sobre él en otro lugar después. Los VAO no cambian mucho las cosas, así que no tendrás que desaprender cosas del tutorial mencionado para usarlas.

Y sobre su segunda pregunta ... OpenGL aplicará su vertex shader para cada vértice. Su trabajo es calcular la posición final del vértice y preparar los datos (como normales, datos claros ...) que se enviarán al sombreador de fragmentos, dados los atributos de vértice y otros datos que envíe al sombreador (uniformes - leerá sobre en el tutorial). El sombreador de fragmentos se ejecutará por fragmento y en el sombreador de fragmentos se calcula el color final de cada fragmento.

Se puede ver aquí:

http://www.opengl.org/sdk/docs/man4/

que cosas como, glPolygonMode y glCullFace todavía están allí.

+0

Gracias por la respuesta. Definitivamente echaré un vistazo a ese enlace una vez que tenga la oportunidad. Y sabía lo que ech shader debería hacer, ya que en lo que escribía, simplemente no estaba seguro de si tenía que decidir qué dibujar o si opengl todavía lo hacía por usted y todo lo que tenía que hacer era la posición del vértice/color del píxel Youself (que parece ser el caso, gracias a Dios). Muy útil respuesta +1 – Zepee

+0

De nada – Bojan

+0

Su enlace al tutorial ahora está roto. – Ruslan

Cuestiones relacionadas