2012-02-16 12 views
6

ACTUALIZACIÓN:OpenGL GL_POLYGON_SMOOTH 2D Antialiasing crear tris de quads

He localizado a cuando instalo Panel de control de NVIDIA, si lo desinstalo funciona correctamente.

Cuando gira un quad en OpenGL, los bordes se hacen irregulares.

Si llamo a glEnable (GL_POLYGON_SMOOTH) los bordes se suavizan, pero OpenGL dibuja una línea diagonal blanca a través de todas mis imágenes como si estuviera creando trisout de mis cuatrillos.

Esto es lo que parece: GL_POLYGON_SMOOTH

¿Hay una manera de desactivar esa línea, o puedo conseguir antialiasing en otro camino más fácil? Probé GL_MULTISAMPLE pero no pasó nada.

En mi código tengo también:

glShadeModel(GL_SMOOTH); 

glMatrixMode(GL_PROJECTION); 

glLoadIdentity(); 

glDisable(GL_DEPTH_TEST); 

glEnable(GL_BLEND); 

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
+3

Parece que los vértices en los dos triángulos simplemente no coinciden, creando la línea delgada. En lugar de dibujar un quad, intente dibujar un triángulo de ventilador. OMI, esta línea debería desaparecer porque ahora OpenGL sabe qué vértices están compartidos (y exactamente iguales). – Ani

+0

Hmm está bien, entiendo la parte que no coincide. Pero no entiendo cómo dibujaría dos triángulos que contengan la mitad de la imagen cada uno y luego rotarlos/escalarlos individualmente. en el momento en que dibujo la textura en un quad normal: Soy bastante nuevo en OpenGL y no he trabajado con triángulos en absoluto ya que solo trabajo con 2D e imágenes. Así que, por favor, apúntame en la dirección de cómo dibujar un abanico de triángulo. Gracias, Markus – Orujimaru

+0

¿Ha probado esto en más de una computadora con diferentes tarjetas gráficas y/o probado con diferentes controladores? Me parece que podría ser un error del controlador. –

Respuesta

3

Ok, voy a escribir esto como una respuesta, que me haga saber si funciona después de haberlo probado.

GL_TRIANGLE_FAN: Si la aplicación especifica una secuencia de vértices v, OpenGL representa un triángulo con v 0, v 1 y v 2; otro triángulo usando v 0, v 2 y v 3; otro triángulo usando v 0, v 3 y v 4; y así. Si la aplicación especifica n vértices, OpenGL representa n-2 triángulos conectados.

Así que para dibujar un quad unidad centrada en el origen,

glBegin(GL_TRIANGLE_FAN); 

glTexCoord2f(0f, 0f); 
glVertex3f(-halfWidth, -halfHeight, 0f); 

glTexCoord2f(0f, 1f); 
glVertex3f(-halfWidth, halfHeight, 0f); 

glTexCoord2f(1f, 1f); 
glVertex3f(halfWidth, halfHeight, 0f); 

glTexCoord2f(1f, 0f); 
glVertex3f(halfWidth, -halfHeight, 0f); 

glEnd(); 

Ahora usted puede poner las mismas transformaciones de todo esto que utilizó alrededor de su quad! ¡Espero que ayude!

+0

Lo sentimos, pero esto da exactamente el mismo resultado que dibujar un quad. Gracias por el esfuerzo. // Markus – Orujimaru

+0

En este punto, empiezo a sospechar del controlador y/o GPU como dice @jerrycoffin más arriba. Pruébalo en alguna otra GPU/controlador. – Ani

+0

Sí, estoy bastante seguro de que es eso. Lo cual es realmente extraño Nunca he tenido ningún problema con las GPU de MU en absoluto desde que las compré hace 18 meses. Intenté algunos controladores diferentes, pero eso no ayudó. Traté de desactivar una GPU a la vez, pero eso tampoco ayudó. No tengo idea de cómo solucionar el problema de la GPU en sí. Puedo vivir con eso si solo es mi computadora, pero como espero lanzar el juego en el que estoy trabajando no es aceptable si esto ocurre con frecuencia = / – Orujimaru