我正在做一些与opengl测试,并试图绘制一个红色的矩形。这是代码:为什么此代码在OpenGL中打印白色矩形而不是红色?
qDebug(__FUNCTION__);
float *rgbImage = (float *)malloc(width * height * 3 * sizeof(float));
float *rgbImagePtr = rgbImage;
qDebug("Initializing");
int y, x;
for(y = 0; y < height; y++)
{
for(x = 0; x < width; x++)
{
*rgbImagePtr++ = 255; // R
*rgbImagePtr++ = 0; // G
*rgbImagePtr++ = 0; // B
}
}
// Generate false image
qDebug("Creating texture");
GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
qDebug("drawing image");
glTexImage2D(GL_TEXTURE_2D, 0, 3, width, height, 0, GL_RGB, GL_FLOAT, rgbImage);
qDebug("drawing image finished");
当我运行我的例子时,我得到白色矩形而不是红色,因为我知道当我在做什么。有什么问题?
编辑1
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(0.0f, 0.0f, 0.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f(256.0f, 0.0f, 0.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f(256.0f, 256.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(0.0f, 256.0f, 0.0f);
glEnd();
抽奖代码添加
浮点数据格式应使用在范围0..1范围内归一化的值。 – Luca
您只显示您的纹理绑定代码。您的绘图代码可能存在问题......您可能也想显示该问题。 – MuertoExcobito
@Luca什么是R频道的正确价值呢? – jgd