Strukturierte Punkte in OpenGL ES 2.0?
Ich versuche, umzusetzen texturierte Punkte (z.B. Punkt-sprites), die in OpenGL ES 2.0 für ein Partikel-system. Problem das ich habe ist das die Punkte alle render als festen schwarzen Quadrate, anstatt die textur richtig zugeordnet.
Habe ich verifiziert, dass gl_PointCoord ist in der Tat die Rückkehr der x/y-Werte von 0.0 bis 1.0, die Karte würde über die gesamte textur. Die texture2D-Aufruf immer scheint die Rückkehr der schwarzen wenn.
Meiner vertex-shader :
attribute vec4 aPosition;
attribute float aAlpha;
attribute float aSize;
varying float vAlpha;
uniform mat4 uMVPMatrix;
void main() {
gl_PointSize = aSize;
vAlpha = aAlpha;
gl_Position = uMVPMatrix * aPosition;
}
Und mein fragment-shader :
precision mediump float;
uniform sampler2D tex;
varying float vAlpha;
void main () {
vec4 texColor = texture2D(tex, gl_PointCoord);
gl_FragColor = vec4(texColor.rgb, texColor.a * vAlpha);
}
Die textur in Frage ist 16x16. Ich bin in der Lage, erfolgreich Karte diese textur auf andere geometrie, aber aus irgendeinem Grund nicht auf die Punkte.
Meine Plattform ist ein Motorola Droid, Android 2.2.
- Ignorieren, ich hatte ein problem mit meinem textur-loading routine. Funktioniert Super jetzt.
- Sie könnte gesagt haben, was das problem war und wie du es gelöst hast...
- War es nur das laden der textur? Wie sind Sie mit der übergabe an den shader? Cheers
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wählen Sie Ihren textur, wie aktiv und binden es - wie normalerweise. Aber du musst deine textur-Einheit, als einheitlich an das shader-Programm. So können Sie die
gl_PointCoord
als textur-Koordinaten in Ihrem fragment-shader.Und Ihre fragment-shader Aussehen sollte:
Ich hatte auch ein ähnliches problem - meine sprites waren nur render als farbige Quadrate, aber keine textur zum Vorschein.
Musste ich dies hinzufügen:
Texturierung muss nicht aktiviert werden, die standardmäßig auf allen GPUs.