Hallo. Ich versuche, um ein Array von 256 Farben GLSL übergeben, damit es als Palette eingesetzt werden können.
Die entsprechende Delphi-Code zu erstellen und senden Sie die Daten
Code: color_palette:array[0..255]of tcolor; palette:array[0..255]of TGLVectorf3; for y:=0 to 255 do begin palette[y][0]:=getrvalue(color_palette[loop])/255; palette[y][1]:=getgvalue(color_palette[loop])/255; palette[y][2]:=getbvalue(color_palette[loop])/255; end; glUniform3fvARB(glGetUniformLocationARB(prog,PGLcharARB(ansistring('palette'))),256,@palette);
Die einfachste Fragment-Code. Dies sollte beschatten das Bild mit den umgerechnet 256 Farben, aber alles was ich bekomme ist eine solide purple Bild?
Code: uniform vec2 resolution; uniform vec3 palette[256]; int index; void main(void) { index=int(gl_FragCoord.x/resolution.x*255.0); gl_FragColor=vec4(palette[index].x,palette[index].y,palette[index].z,1.0); }
Kann jemand sehen, was ich falsch mache? Ich habe viele Variationen dieser Code versucht, aber nie die Farbpalette, um korrekt angezeigt?
Vielen Dank für jede Hilfe.
|