Sorry for my english.
I have a texture on quad with specific sizes. I need to get accurate pixel coordinates on mouse click and draw new texture with cross in this place. I heard it can be implement with additional shader like this:
Main shader:
VERTEX_SHADER = compileShader("""
void main() {
gl_TexCoord[0] = (gl_Vertex+1.0)*0.5;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}""", GL_VERTEX_SHADER)
FRAGMENT_SHADER = compileShader("""
uniform sampler2D color;
void main() {
vec3 tcolor = texture2D(color, gl_TexCoord[0].st).xyz;
gl_FragColor = vec4(tcolor, 0.0);
}""", GL_FRAGMENT_SHADER)
Additional shader I create on mouse click:
VERTEX_SHADER = compileShader("""
void main() {
gl_TexCoord[0] = (gl_Vertex+1.0)*0.5;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}""", GL_VERTEX_SHADER)
FRAGMENT_SHADER = compileShader("""
uniform sampler2D color;
void main() {
vec3 tcolor = texture2D(color, gl_TexCoord[0].st).xyz;
gl_FragColor = vec4(gl_TexCoord[0].st, 0.0, 0.0);
}""", GL_FRAGMENT_SHADER)
So as far as I know coordinates of mouse should be in back buffer after that. I tried to read data from back buffer with glReadPixels but got pixels values instead of needed coordinates.
Please help to implement this.
Thank you in advance.