我试图了解 OpenGL 的基本概念。一个星期过去了,我离那里还很远。一旦我进入 glsl,我就知道该怎么做,但我发现到达那里有点棘手。
我目前能够传递我操作和呈现的视频像素。然后我一直在尝试添加静止图像作为叠加层。这就是我迷路的地方。我的最终目标是在同一个片段着色器中结束,其中包含来自我的视频和静止图像的像素数据。我想这意味着我需要两个纹理并传递两个像素缓冲区。我目前正在传递这样的视频像素:
glGenTextures(1, &textures[0]);
//target, texture
glBindTexture(GL_TEXTURE_2D, textures[0]);
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_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_BGRA, GL_UNSIGNED_BYTE, buffer);
然后我会用图像中的第二个缓冲区在纹理[1] 上重复这个过程吗?如果是这样,我是否同时绑定 GL_TEXTURE0 和 GL_TEXTURE1?...我的着色器看起来像这样吗?
uniform sampler2D videoData;
uniform sampler2D imageData;
一旦我在着色器中?似乎无论我尝试哪种组合,图像和视频最终都只是这两者中的视频数据。
很抱歉在这里合并了许多问题,只是想清除我的许多假设并继续前进。为了澄清这个问题,我需要做什么才能在所描述的过程中从静止图像中添加像素?(“易于理解”的示例代码或任何类型的提示将不胜感激)。