2009-07-16 6 views
2

Ich möchte ein metallisches 3D-Objekt machen, das reflektierend wirkt. Ich möchte dies mithilfe eines Umgebungs-Shaders erreichen, der entweder eine Kugel- oder Würfel-Map verwendet, der ich ein Bild oder eine Textur als "Reflexionsquelle" zuweisen kann.Unterstützt OpenGL ES Umgebungs-Shader?

Unterstützt OpenGL ES auf dem iPhone dies in allen Versionen?

Antwort

4

OpenGL ES 2.0 bietet Shader-Unterstützung. Es ist jedoch in vielen mobilen Geräten, die heute auf dem Markt sind, nicht verfügbar. Es wäre wichtig, dass Sie sowohl die ES 1.1- als auch die ES 2.0-Versionen der Grafiken codieren.

von Apple Dev Center hat eine Vielzahl von Informationen über den Übergang:

Die Fixed-Function-Pipeline von OpenGL 1.1 ES gutes Verhalten Baseline bietet für eine 3D-Grafik-Pipeline, von Transformation und Beleuchtung Eckpunkten zu Mischen der endgültigen Pixel mit dem Framebuffer . Wenn Sie eine OpenGL ES 2.0 Anwendung implementieren möchten, müssen Sie diese Funktionalität duplizieren . Auf der andererseits, OpenGL ES 2.0 ist mehr flexibler als OpenGL ES 1.1. Benutzerdefinierte Vertex-und Fragment-Operationen, die wäre schwierig oder unmöglich zu implementieren mit OpenGL ES 1.1 kann trivial mit einem OpenGL ES 2.0 Shader implementiert werden. Die Implementierung einer benutzerdefinierten Operation in einer OpenGL ES 1.1 Anwendung erfordert oft mehrere Rendering-Pässe und komplexe Änderungen zu OpenGL ES-Status, die die Absicht des Codes verdecken. Wenn Ihre Algorithmen in Komplexität wachsen, vermitteln Shader diese Operationen klarer und prägnant und mit besserer Leistung.

http://developer.apple.com/iphone/library/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/DeterminingOpenGLESCapabilities/DeterminingOpenGLESCapabilities.html#//apple_ref/doc/uid/TP40008793-CH102-SW1

2

In den alten Tagen "metallisch" Ergebnis erzielt wurde Technik "Umgebungs-Mapping" oder "reflection mapping" genannt werden.

Da für OpenGL ES 1.1 keine programmierbaren Shader verfügbar sind, kann eine einfache Reflektionszuordnung mit Software durchgeführt werden. Ändern Sie einfach Vertex-Normale entsprechend der Reflexionsquelle/Kamera und erhalten Sie Textur-UV-Koordinaten aus dem transformierten Normalenvektor. Das iPhone hat PS, um dies leicht zu tun, zumindest mit anständigen Scheitelpunkten.

+0

Kann man davon ausgehen, dass 2.0 eine Umgebungszuordnung hat? – Soviut

+0

Mit GLSL ES Schattierungssprache ja. Scheitelpunkt-Shader für Umgebungszuordnungen können einfach geschrieben werden. Es gibt weniger Code und Ärger als mit einer Softwarelösung. – Virne

0

OpenGL ES Unterstützt die meisten Funktionen von OpenGL (und einige zusätzliche Funktionen für mobile Geräte). Wenn ich mich recht erinnere, unterstützt das iPhone 3Gs Fragment-Shader, während das ältere iPhone 3G nur eine feste Pipeline unterstützt.