我使用的当前IDE是visual studio 2010。 看到很多线程使用不同的SDL命令来转换图像 但无法准确地将图像的每个像素转换为红色通道/蓝色通道/绿色通道
只是尝试只显示红色通道。不可能吗?
我已经做了大约150行的代码来显示图像(参考:wiki和stackoverflow)
链接:http://codepad.org/oTA9RkV7
任何人都可以教导并提供一些样品以仅显示红色通道吗?
答案 0 :(得分:0)
你在问什么以及你的代码实际上在做什么是两件截然不同的事情。您可以使用SDL来设置openGL上下文,但是您实际上并没有在代码中执行此操作或使用任何openGL api调用来执行任何操作,您只使用SDL函数。
如果您希望以RGB格式将图像blit到屏幕上,如果您不必自己转换图像,我会感到惊讶。即在blitting图像之前,将绿色和蓝色通道设置为0。更熟悉SDL的人将能够更好地回答这个问题。
但是,如果您希望使用openGL,则更容易实现您要求的确切功能,但这不是您应该在openGL中尝试的第一件事,我建议将this tutorial作为学习的起点OpenGL的。在下面的描述中,我假设您使用的是支持着色器的openGL版本。 (即GL 2 +)。
在单独绘制每个频道之前,您需要管理以下内容:
glDrawArrays
或glDrawElements
glTexImage2D
加载纹理并将其显示在矩形上。现在,您可以使用以下行中的片段/像素着色器仅显示红色通道。
#version 110
uniform sampler2D texture;
varying vec2 texcoord;
void main()
{
gl_FragColor = vec4(texture2D(texture, texcoord).x, 0.0f, 0.0f, 1.0f);
}