2010-12-03 9 views
-1

Bin neu in openGl, und ich habe ein paar Dinge, die es verwenden. also was ich versuche zu tun ist, einen würfel zu zeichnen, aber eine textur auf nur eine oberfläche davon ... ich konnte nicht die antwort auf einige zufällige seiten finden ich fand auf google, sie alle reden über das texturieren einer ganzen 3D Objekt, also ist es möglich, es nur auf eine Oberfläche anzuwenden oder nicht ?!Texturierung in OpenGl

danke!

+0

Sind Sie die feste Funktion Pipeline oder die programmierbare Pipeline mit? – kusma

Antwort

1

Nehes OpenGL-Tutorials sind die # 1-Ressource, die ich empfehlen würde, OpenGL-Entwicklung zu starten. Zumindest das ist, wo ich aus ;-)

Hier gestartet ist der Link: http: // nehe.gamedev.net

Texturing in adressiert ist Lesson 6: Texture Mapping

+0

Dieser Artikel beschreibt die Texturierung des gesamten Objekts, nicht nur ein Teil davon. – kusma

1

Verwendung:

glEnable(GL_TEXTURE_2D);

vor das eine Oberflächendarstellung und dann direkt vor den anderen Oberflächen:

glDisable(GL_TEXTURE_2D);

Sie müssen natürlich sicherstellen, dass Sie Ihre Textur laden, einrichten und binden, bevor Sie zum Rendern Ihrer Oberflächen kommen.

+0

Dies ist offensichtlich die richtige Antwort für die Fixed-Function-Pipeline. Für die programmierbare Pipeline hat glDisable (GL_TEXTURE_2D) jedoch keine Auswirkung. – kusma

+0

Angesichts der OP "Ich bin neu zu OpenGL", ich * hoffe * er beginnt mit der festen Funktion. :) –

+0

Ich bin mir nicht ganz sicher, ob ich dir darin zustimme. Fixed-Function kann heutzutage ziemlich umständlich sein. Ich denke, ich würde Anfängern empfehlen, vor dem Texturieren etwas über Shaders zu lernen, da das Strukturieren zu einer schrecklichen Unordnung wird;) – kusma

0

Sie müssen auch Texturkoordinaten zu den Scheitelpunkten der Polygone hinzufügen, auf die Sie eine Textur anwenden möchten. Dazu müssen Sie glTexCoord2f/glTexCoord2d verwenden. So zum Beispiel, wenn Sie die folgende (untextured) Polygon haben:

glBegin(GL_POLYGON); 
glVertex3f(0.0f, 0.0f, 0.0f); 
glVertex3f(1.0f, 0.0f, 0.0f); 
glVertex3f(1.0f, 1.0f, 0.0f); 
glVertex3f(0.0f, 1.0f, 0.0f); 
glEnd(); 

texture In Koordinaten wie folgt aus:

glBegin(GL_POLYGON); 
glTexCoord2f(0.0f, 0.0f); glVertex3f(0.0f, 0.0f, 0.0f); 
glTexCoord2f(1.0f, 0.0f); glVertex3f(1.0f, 0.0f, 0.0f); 
glTexCoord2f(1.0f, 1.0f); glVertex3f(1.0f, 1.0f, 0.0f); 
glTexCoord2f(0.0f, 1.0f); glVertex3f(0.0f, 1.0f, 0.0f); 
glEnd();