我一直在尝试使用 glTexImage2D 绘制一个位图 int 数组,但它只输出白色的虚无。如果我将 int 数组初始化为 char 数组,它会从内存中输出混乱的像素,但如果我尝试将 int 数组转换为 char 数组,它只会呈现白色。
我什至尝试使用 memcpy 将整数复制到一个 4 倍大的名为 PixelsTemp 的数组,但由于某种原因它仍然是白色的。如果我手动更改 PixelsTemp[211] 中的某些值,它将显示单个蓝色像素,但 memcpy 中没有显示任何内容。这没有任何意义,因为 PixelsTemp 实际上与 glDrawPixels 一起工作得很好,但它与 glTexImage2D 一起只是白色。请帮助。
void beginRefresh() {
//BITMAPINFO bmi = tbmi;
//while (true) { //v these may be important later
//StretchDIBits(bp, 0, 0, realwidth, realheight, 0, 0, width, height, Pixels, &bmi, DIB_RGB_COLORS, SRCCOPY);
/*glDrawPixels(width,
height,
GL_RGBA,
GL_UNSIGNED_BYTE,
Pixels);*/
unsigned char* PixelsTemp = new unsigned char[width * height * 4];
memcpy(PixelsTemp, Pixels, width * height * 4);
glEnable(GL_TEXTURE_2D);
glGenTextures(1, &glBuffer);
glBindTexture(GL_TEXTURE_2D, glBuffer);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
//unsigned char* PixelsTemp = (unsigned char*)Pixels;
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, PixelsTemp);
UpdateViewport();
glClear(GL_COLOR_BUFFER_BIT); // Thanks Benedani!
glViewport(nViewX, nViewY, nViewW, nViewH);
glBegin(GL_QUADS);
glTexCoord2f(0.0, 1.0); glVertex3f(-1.0f + (fSubPixelOffsetX), -1.0f + (fSubPixelOffsetY), 0.0f);
glTexCoord2f(0.0, 0.0); glVertex3f(-1.0f + (fSubPixelOffsetX), 1.0f + (fSubPixelOffsetY), 0.0f);
glTexCoord2f(1.0, 0.0); glVertex3f(1.0f + (fSubPixelOffsetX), 1.0f + (fSubPixelOffsetY), 0.0f);
glTexCoord2f(1.0, 1.0); glVertex3f(1.0f + (fSubPixelOffsetX), -1.0f + (fSubPixelOffsetY), 0.0f);
glEnd();
//glDrawPixels(width, height, GL_RGBA, GL_UNSIGNED_BYTE, PixelsTemp);
delete[] PixelsTemp;
SwapBuffers(glDeviceContext);
}