2010-06-11 26 views
0

Je vais essayer de garder cela simple.Obtenir des informations normales à partir de la sortie de rendu OpenGL

Je veux un moyen d'accéder aux informations normales de la scène, à partir de la sortie Frame Buffer (ou similaire). De la même manière, on peut accéder au Depth Buffer en utilisant glGetTexImage et GL_DEPTH_COMPONENT.

Je sais que je pourrais mettre en place un fragment shader qui produit les informations normales dans l'espace colorimétrique RVB, qui pourrait à son tour être lu à partir de l'image rendue. Je me demande cependant s'il y a un moyen de le faire dans l'API openGL.

Je vais tout préciser sur demande mieux que je peux, Merci

Répondre

1

Vous connaissez déjà la solution: Rendre la normale RVB. Il n'y a pas de tampon normal intégré que vous pourriez utiliser. Si vous ne souhaitez pas rendre votre scène deux fois, utilisez des objets framebuffer (FBO) avec plusieurs cibles de rendu (MRT). Ensuite, vous pouvez écrire la couleur et la normale dans des textures séparées dans votre fragment shader.

+0

Merci. J'espérais une sorte d'extension à openGL qui mettrait la normale en sortie de couleur du fragment shader. Cependant, après avoir appris quelques GLSL, ce n'était pas difficile à faire moi-même. Alors merci pour la clarification. Je ne pense pas que je vais avoir besoin de FBO | MRT, car c'est à des fins de simulation/recherche et je n'ai pas besoin des normales à chaque image. Cependant, il est bon de savoir où améliorer la vitesse si nécessaire. – swalog