Bücher online kostenlos Kostenlos Online Lesen
Erfolgreiche Spieleentwicklung

Erfolgreiche Spieleentwicklung

Titel: Erfolgreiche Spieleentwicklung
Autoren: Alexander Rudolph
Vom Netzwerk:
nicht rendern:
if(TextureColor.a < 0.01)
discard; // den Shader vorzeitig verlassen

// Hinweis:
// Beim Laden einer Textur wird für die transparenten
// Bereiche ein Alpha-Wert von 0 festgelegt!

// Rückgabewert des Fragment Shaders berechnen,
// Texturfarbe und Zusatzfarbe multiplikativ verknüpfen:
gs_FragColor = Color*TextureColor;

// die Pixelfarbe berechnet sich hierbei wie folgt:
// gs_FragColor = vec4(Color.r*TextureColor.r,
// Color.g*TextureColor.g, Color.b*TextureColor.b,
// Color.a*TextureColor.a);
}
    Listing 1.6: Ein einfacher GLSL-Fragment-Shader
    Im Detail erklärt
GLSL Shader Framework Entwurf: http://www.spieleprogrammierung.net/2010/08/glsl-shader-framework-entwurf.html
GLSL Shader Programme in eine OpenGL-Anwendung laden: http://www.spieleprogrammierung.net/2010/08/glsl-shader-programme-in-eine-opengl.html
GLSL Shader - Schnittstelle zu der in den OpenGL-Tutorials verwendeten Mathematik Bibliothek: http://www.spieleprogrammierung.net/2010/08/glsl-shader-schnittstelle-zu-der-in-den.html
GLSL Shader - Aktivieren eines Shader Programms, Übergabe von Variablen und Texturen: http://www.spieleprogrammierung.net/2010/08/glsl-shader-aktivieren-eines-shader.html
GLSL Vertex Shader und Fragment Shader Grundlagen: http://www.spieleprogrammierung.net/2010/08/glsl-vertex-shader-und-fragment-shader.html

1.7 Rendern eines 3-D-Modells
    Die Handhabung der Shader im Allgemeinen und die Verwendung der glUniform() -Funktionen im Speziellen ist – freundlich gesagt – ein wenig umständlich. Für die tägliche Arbeit bietet sich daher die Verwendung eines Shader-Frameworks an (siehe die CGLSLShader -Klasse im Programmbeispiel [14]). Listing 1.7 zeigt, wie sich ein einfaches Vertex-Quad mithilfe eines solchen Frameworks darstellen lässt. Die einzelnen Schritte beim Rendering sind für alle 3-D-Modelle gleich, sie unterscheiden sich lediglich in der Anzahl und in der Art der zu übergebenden Shader-Parameter sowie in der verwendeten Zeichenmethode:
Auswahl des zu verwendenden Shaders
Übergabe der benötigten Parameter an den Shader (Transformationsmatrizen, Texturen etc.)
Binden von Vertex- und Index-Buffer des zu zeichnenden 3-D-Modells
Festlegen der Vertex-Attribute
Aufruf der passenden Zeichenmethode (Draw Call)
Beendigung der Arbeit mit dem ausgewählten Shader
    // Arbeit mit dem Shader beginnen:
Shader->Use_Shader();

// die zu verwendende Textur festlegen:
Shader->Set_Texture(GL_TEXTURE0, 0, pCursorTexture, "TestTexture");

// Matrix für die Transformation der Vertices in den Bildraum übergeben:
Shader->Set_ShaderMatrixWorldViewProjection(&TransformationMatrix);

// Vertex- und Index-Buffer binden:
glBindBuffer(GL_ARRAY_BUFFER, VertexBufferId);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, IndexBufferId);

// die zu verwendenden Vertex-Attribute festlegen:
Shader->Set_VertexAttributes();

// Vertexquad (2 Dreiecke, 6 Indices) zeichnen (Draw Call):
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, NULL);

// Arbeit mit dem Shader beenden:
Shader->Stop_Using_Shader();
    Listing 1.7: Rendern eines Vertex-Quads
    Links & Literatur
OpenGL-Spezifikation (engl.): http://www.khronos.org/opengl
OpenGL-Homepage (engl.): http://www.opengl.org
Spieleentwicklung mit Schwerpunkt auf OpenGL: http://www.spieleprogrammierung.net
Visual Studio Express Editionen: http:// www.microsoft.com/germany/express/
Dropbox: http://www.dropbox.com
Blender: http://www.blender.org
GIMP: http://www.gimp.org
Ogre3D: http://www.ogre3d.org
NVIDIA PhysX: http://www.nvidia.de/object/nvidia_physx_de.html
GLEW (OpenGL Extension Wrangler Library): http://glew.sourceforge.net
GLUT (OpenGL Utility Toolkit): http://www.opengl.org/resources/libraries/glut/
SDL Image – zum Laden von Bilddateien: http://www.libsdl.org/projects/SDL_image/
SDL (Simple DirectMedia Layer): http://www.libsdl.org
Downloadbereich: http://www.entwickler-press.de/spieleentwickeln

2 OpenGL – Fortgeschrittene Grafikprogrammierung
    Im zweiten Teil dieses shortcuts befassen wir uns mit einigen fortgeschrittenen Themen der Grafikprogrammierung, die uns als Grundlage für die Entwicklung eines einfachen Frameworks für 3-D-Anwendungen dienen werden. Hierzu zählen das Ressourcenmanagement, die Verwendung von Frame-Buffer- und Uniform-Buffer-Objekten, Deferred Lighting im Rahmen des Post-Processings sowie Geometry Instancing.

2.1 Grafik-Frameworks
    Die Entwicklung kommerzieller Spieletitel wird stetig aufwändiger und kostspieliger, was nicht zuletzt an der rasanten technischen
Vom Netzwerk:

Weitere Kostenlose Bücher