小编Str*_*her的帖子

使用 glGetTexImage() 进行像素访问?

我有 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 …

c++ opengl textures sdl-2

5
推荐指数
1
解决办法
3092
查看次数

标签 统计

c++ ×1

opengl ×1

sdl-2 ×1

textures ×1