PDA

View Full Version : a very simple shader, but it dosent work!!



break_stuff247
11-05-2002, 08:06 AM
Hi all,
could anyone please tell me whats wrong with the following:
//the shader code
!!ARBvp1.0

PARAM mvp[4] = { state.matrix.mvp };
ATTRIB pos = vertex.position;

OUTPUT oPos = result.position;

DP4 oPos.x, pos, mvp[0];
DP4 oPos.y, pos, mvp[1];
DP4 oPos.z, pos, mvp[2];
DP4 oPos.w, pos, mvp[3];
END

//in main
glColor3f(1,1,1);
glBindProgramARB(GL_VERTEX_PROGRAM_ARB,simpleShade r);
glEnable(GL_VERTEX_PROGRAM_ARB);


glBegin(GL_QUADS);
glVertex3f(0, 0, -20.0f);
glVertex3f(5,0, -20.0f);
glVertex3f(5,5, -20.0f);
glVertex3f(0,5, -20.0f);
glEnd();

nothing appears on the screen. If i dont enable the shader code(by not calling glEnable(GL_VERTEX_PROGRAM_ARB)) it draws the rect fine.

also i did check for errors in the compilation of the shader(using GL_PROGRAM_ERROR_POSITION_ARB) and it didnt return any errors so i know that the shader is valid

does anyone know what im doing wrong? Finding resources on openGL shaders is tuff http://www.opengl.org/discussion_boards/ubb/smile.gif

bashbaug
11-05-2002, 08:15 AM
Hello-

Just out of curiosity, what's your clear color? If you don't write something to the color result registers, the results are undefined (they don't "pass through" by default). It's possible that undefined in your case means "black", so you might try setting your clear color to something other than black and see if your quad shows up.

Alternatively, write something to the result color register. Adding this line should do it: MOV result.color, 1;

-- Ben

break_stuff247
11-05-2002, 08:38 AM
Hi Ben

THNAKS ALOT man, thats exactly what it was!
i was clearing to black then i cleared to red and this little black rect appeared on the screen.
i guess i forgot that with shaders you have to do EVERYTHING yourself so glColor3f had no effect(d'oh)

anway thanks again http://www.opengl.org/discussion_boards/ubb/smile.gifben http://www.opengl.org/discussion_boards/ubb/smile.gif

henryj
11-05-2002, 11:55 AM
Just a general tip...

When doing research/experimental work never ever clear to black or white. Pick a random colour. It will save you hours of pointless debugging time.

break_stuff247
11-05-2002, 02:10 PM
Amen to that Henryj, can you believe id been trying to solve this for over a day http://www.opengl.org/discussion_boards/ubb/smile.gif