【发布时间】:2016-05-13 11:07:38
【问题描述】:
我目前正在尝试使用着色器来修改我的 2d 图像以获得简单的东西,主要是教程中的东西,我想在我的项目中实现它们。
问题是,我不能使用 GLSL 版本 150,因为我们现有的一些着色器正在使用另一个版本并且它不兼容,我只是想知道是否可以只将 ahder 应用于 ofImage 或其他东西。
到目前为止我已经尝试过了,但着色器似乎并没有理解它所拥有的纹理是图像,它只是根据 ofSetColor 绘制颜色。
这是一些代码,我使用的片段和顶点着色器有点基本(我得到的虚拟代码,不知道它是否有效)
片段着色器:
uniform sampler2DRect texture0;
void main()
{
//Getting coordinates of the current pixel in texture
vec2 pos = gl_TexCoord[0].xy;
//Getting the pixel color from the texture texture0 in pos
vec4 color = texture2DRect(texture0, pos);
//Output the color of shader
gl_FragColor = color;
}
顶点着色器:
void main()
{
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
gl_TexCoord[0] = gl_MultiTexCoord0;
gl_FrontColor = gl_Color;
}
ofApp.cpp:
void ofApp::setup()
{
ofDisableArbTex();
ofEnableDepthTest();
m_shader.load("shaders/shaderTest");
m_image.loadImage("sunflower.png");
}
void ofApp::draw()
{
m_shader.begin();
m_image.draw(0, 0);
m_shader.end();
}
所以基本上我想知道的是如何将我的图像“传递给着色器”,这样我就可以改变简单的东西,比如它的颜色,也许还可以做一些基本的失真效果。
另外,我将在 3D 项目世界(一些沙盒)中使用这些。
任何关于如何开始的提示,也许可以帮助我更多地了解我做错了什么都会有所帮助!
谢谢!
【问题讨论】:
标签: c++ textures glsl shader openframeworks