2015-08-08 3 views
0

Actuellement, j'ai GL_DEPTH_TEST activé et l'utiliser pour les textures. Cependant, j'aimerais dessiner un rectangle non texturé avec une certaine profondeur/valeur z.OpenGL Draw Rectangle à la profondeur donnée

glDisable(GL_TEXTURE_2D); 
glColor3f(colour.x, colour.y, colour.z); 
glRects((short) rect.x, (short) rect.y, (short) rect.z, (short) rect.w); 
glEnable(GL_TEXTURE_2D); 

Le code ci-dessus dessine le carré. Comment puis-je définir une valeur Z ou profondeur pour le carré afin que le test de profondeur fonctionne avec?

Répondre

0

La famille glRect des fonctions toujours avec tirage z à 0. Donc, implicitement vous avez deux options:

  1. Mettre en place même transformation qui met le plan z=0 à l'endroit où vous le souhaitez.
  2. N'utilisez pas du tout glRect et tracez simplement un rectangle à l'aide de 4 sommets à la coordonnée z de votre choix.

Vous devez être conscient que chaque ligne dans le code que vous avez collé compte sur dépréciée fonctionnalité OpenGL et glRect lui-même est une fonction assez obscure, même pour le code désapprouvée.

+0

Comment procéder pour dessiner un rectangle de la manière _best_? (J'utilise actuellement les VBO pour les textures.) – user5204762

+0

Les VBO ne sont pas pour les textures. Ils sont pour les données de vertex, comme l'indique explicitement le _V_ dans VBO. Je ne sais vraiment pas ce que tu veux dire par là. Mais vous devriez utiliser les VBO pour toutes les données de géométrie dans le GL, car c'est le seul chemin non-obsolète pour spécifier des attributs de vertex. – derhass

+0

Ouais, un VBO pour la position de destination et un pour la position de la texture dans la feuille de sprite. Merci d'avoir répondu! – user5204762