opengl - 在 glsl 中创建负纹理
问题描述
我正在尝试在 glsl 中实现一些简单的图像处理,例如从图像创建灰色和负纹理,但似乎我无法弄清楚为什么这在片段着色器中不起作用。样式 2 应该按预期将图片变成灰色作品,但样式 3 应该创建负图像只渲染空白图像。
#version 140
in vec2 textureCoords;
out vec4 out_Color;
uniform sampler2D guiTexture;
uniform int style;
void main(void)
{
if(style==1)
{
out_Color = texture(guiTexture,textureCoords);
}
else if(style==2)
{
out_Color = texture(guiTexture,textureCoords);
float grayscale = (out_Color.x+out_Color.y + out_Color.z)/3;
out_Color = vec4(grayscale,grayscale,grayscale,out_Color.w);
}
else if(style==3)
{
out_Color = texture(guiTexture,textureCoords);
float Newr = (255.0 - out_Color.x);
float Newg = (255.0 - out_Color.y);
float Newb = (255.0 - out_Color.z);
out_Color =vec4( Newr, Newg, Newb , out_Color.w);
}
}
解决方案
推荐阅读
- html - 第 2 行的块标记无效:“设置”。您是否忘记注册或加载此标签?
- docker - blazor 在 docker 中运行,如何获取客户端 IP?
- keras - 使用接受参数的自定义层加载 Keras 模型
- r - 根据 R 中的重复值重构数据
- python - 如何使用 CNN 定位对象?
- python - 根据同一数据框列表中某些列的值从熊猫数据框中选择行?
- swiftui - "\.self" 在 swift/swiftUI 中实际上做了什么?
- json - 如何在 prisma、graphql nexus 框架中使用 JSON 类型?
- python - 数据透视表,同时保留所有未涉及的列
- c++ - 无论如何我可以确定构造函数是否存在?