I am try draw a rectangle in OpenGL with texture. before I'm writing texture to rectangle I draw one OpenGL primitive with appropriate color. Then I write texture to rectangle using code given below where variable buffer contains RGB data for 800x600 pixels. But perform execution a piece of code leads to what color inside rectangle remains filled with color from the primitive. What am I doing wrong?
Update code from 07.11.19
a piece of code:
//glDisable(GL_COLOR_MATERIAL);
glScalef(1,1,1);
glPixelstorei(GL_UNPACK_ALIGNMENT, 1);
glGenTextures (1, @texID);
glBindTexture (GL_TEXTURE_2D,texID);
if schglobal=1 then
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 800, 600, 0, GL_BGR, GL_UNSIGNED_BYTE, buffer)
else
begin
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 800, 600, 0, GL_BGR, GL_UNSIGNED_BYTE, buffer)
end;
glcolor3i(255,255,255);
//glcolor3i(0,0,0);
//glcolor3i(0,0,0);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
//glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE);
glBindTexture (GL_TEXTURE_2D,texID);
glEnable(GL_TEXTURE_2D);
glBegin (GL_QUADS);
glTexCoord2f (0, 0);
glVertex3f (vertexes[4,1], vertexes[4,2], vertexes[4,3]);
glTexCoord2f (1, 0);
glVertex3f (vertexes[2,1], vertexes[2,2], vertexes[2,3]);
glTexCoord2f (1, 1);
glVertex3f (vertexes[1,1], vertexes[1,2], vertexes[1,3]);
glTexCoord2f (0, 1);
glVertex3f (vertexes[3,1], vertexes[3,2], vertexes[3,3]);
glEnd;
ans:=glGetError;
//glFlush();
//glBindTexture (GL_TEXTURE_2D,0);
glDisable(GL_TEXTURE_2D);
Update code from 08.11.19 (work but don't work if glTexSubImage2D used error 1281)
glClear (GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glScalef(1,1,1);
glPixelstorei(GL_UNPACK_ALIGNMENT, 1);
glGenTextures (1, @texID);
glBindTexture (GL_TEXTURE_2D,texID);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
if use_gltexsubimage=false then
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 800, 600, 0, GL_BGR, GL_UNSIGNED_BYTE, buffer)
else begin
if use_glteximage=true then begin
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 800, 600, 0, GL_BGR, GL_UNSIGNED_BYTE, buffer);
use_glteximage:=false;
end
else begin
glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, 800, 600, GL_RGB, GL_UNSIGNED_BYTE, buffer);
ans:=glGetError;
end;
end;
glcolor3f(1,1,1);
glBindTexture (GL_TEXTURE_2D,texID);
glEnable(GL_TEXTURE_2D);
glBegin (GL_QUADS);
glTexCoord2f (0, 0);
glVertex3f (vertexes[4,1], vertexes[4,2], vertexes[4,3]);
glTexCoord2f (1, 0);
glVertex3f (vertexes[2,1], vertexes[2,2], vertexes[2,3]);
glTexCoord2f (1, 1);
glVertex3f (vertexes[1,1], vertexes[1,2], vertexes[1,3]);
glTexCoord2f (0, 1);
glVertex3f (vertexes[3,1], vertexes[3,2], vertexes[3,3]);
glEnd;
glBindTexture (GL_TEXTURE_2D,0);
end;