我有 OpenGL 和glGetTexImage().
我想使用以下代码获取我之前创建的纹理的像素:
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D,
0,
GL_RGBA,
width,
height,
0,
GL_RGB,
GL_UNSIGNED_BYTE,
someRandomPixels);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
Run Code Online (Sandbox Code Playgroud)
我正在使用 SDL2。
加载该纹理后,我尝试在 GLuint* 像素指针中获取该纹理的像素,我声明如下:
GLuint* pixels = new GLuint[256*256*4];
Run Code Online (Sandbox Code Playgroud)
此图像的大小为 256x256 像素。
我通过使用获得了像素数据
GLuint* Textur::getPixelsOfTextur(GLuint textur, int width, int height, int numChannels)
{
GLuint* pixels=new GLuint[width*height*numChannels];
glBindTexture(GL_TEXTURE_2D, textur);
glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_INT, pixels);
return pixels;
}
Run Code Online (Sandbox Code Playgroud)
其中“numChannels”对于 RGBA 为 4,对于 RGB 为 3
现在我的问题是我真的不知道如何正确处理 Pixel p(x,y) 因为我的数组的大小是像素数的 4 …