Sie können das sicherlich tun. Rendern Sie den Quad wie gewohnt und senden Sie die Textur als sampler2D
Uniform an den Fragment-Shader.
Im Fragment-Shader können Sie dann entweder texture
oder texelFetch
anrufen. texture
Proben Ihre Textur und texelFetch
sehen, ohne eine Interpolation einen RGB-Texels von der Textur usw.
Hier ist ein Beispiel dafür, was Ihr Fragment-Shader aussehen könnte:
Fragment-Shader
#version 330 core
uniform vec2 resolution;
uniform sampler2D myTexture;
out vec3 color;
void main()
{
vec2 pos = gl_FragCoord.xy/resolution.xy;
pos.y = resolution.y - pos.y;
color = texture(myTexture, pos).xyz;
}
Und dann auf der Anwendungsseite:
Initialisierung
glGenTextures(1, &m_textureID);
glBindTexture(GL_TEXTURE_2D, m_textureID);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, m_imageWidth, m_imageHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, pImage);
m_textureUniformID = glGetUniformLocation(m_programID, "myTexture");
Render loop
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, m_textureID);
glUniform1i(m_textureUniformID, 0);