Array indexing problems in fragment shader

Problems with Canvas, OpenGL, etc...

Array indexing problems in fragment shader

Postby Teknogrebo » Fri Jan 07, 2011 9:29 pm

Hi there everyone,

This is my first post, and I've only recently started programming for Android and OpenGl, so be nice to me :)

I'm writing a little app that will include one screen that will use a palettised image for quick changes in colour. For speed I thought I could implement the system using a shader, so I have a shader up and running using the fantastic examples from the Open GL ES 2.0 programming guide. The problem that I've been banging my head over for the past couple of days is coming up with a way of referencing my palette data within the shader.

My shader currently is:

Code: Select all
precision lowp float;
varying vec2      v_texCoord;
uniform sampler2D s_texture;
uniform int       s_palette[204];  // Specify a palette of 64 rgb entries

void main()
   vec4 col = texture2D( s_texture, v_texCoord );
   int index = (int(col.r * 255.0) * 3;

   gl_FragColor = vec4(float(s_palette[index]) / 255.0, float(s_palette[index+1]) / 255.0,  float(s_palette[index+2]) / 255.0, 1.0);

After playing around with this for ages and not getting very far I discovered that if I reference my palette data by a constant value I could get results, but not by referencing with a variable. Having searched for a while with Google I discovered that this was just the way it was with GLSL 1.1 and was fixed with GLSL 1.3 and that i should add #version 130 at the top of my file. However, adding that had no effect and my shader still doesn't work.

Does anyone have any ideas therefore how to get around this rather crippling flaw in my plan.

Once Poster
Once Poster
Posts: 1
Joined: Fri Jan 07, 2011 9:10 am


Return to Android 2D/3D Graphics - OpenGL Problems

Who is online

Users browsing this forum: No registered users and 1 guest