将GLSL转换为C或C++
Convert GLSL to C or C++
作为一项练习,我正在尝试将GLSL着色器转换为普通的c/c++,而不是通过CPU而不是GPU执行,无论这是否效率低得多,速度慢得多。
假设c/c++中的数据将存储在一个无符号的int像素数组中,我如何将下一行转换为在纯c中执行相同操作的行?
// GLSL
vec2 test = vec2(0.5, 0.2);
vec2 coord = vec2(0.5, 0.5);
vec3 output_color = texture2D(u_texture, coord - test).rgb
我只能到达这个
// C/C++
short vec2_test_x = 127; // Equivalent to 0.5
short vec2_test_y = 51; // Equivalent to 0.2
short vec2_coord_x = 127; // Equivalent to 0.5
short vec2_coord_y = 127; // Equivalent to 0.5
short color_r, color_g, color_b;
int output_color = pixels[.... No idea how to continue....]
......
您所询问的是一个内存映射函数。下面的公式会起作用:
int output_color = pixels[vec2_coord_y * 256 + vec2_coord_x];
//assuming output_color is stored in format XXBBGGRR:
color_r = (output_color & 0x000000FF);
color_g = (output_color & 0x0000FF00) >> 8;
color_b = (output_color & 0x00FF0000) >> 16;
相关文章:
- OpenInventor从9.8升级到10.4.2后,GLSL纹理返回零
- Opengl 3.1 GLSL 140 在 C++ 年输出白色在片段着色器中
- 在不使用统一的情况下将纹理传递给 GLSL 着色器?
- 在细胞中产生噪声 - CPP 和 GLSL
- 这个SSDO演示的GLSL版本要求是自我冲突的吗
- 在 Ubuntu 18.04 上编译 GLSL 着色器时"不支持 GLSL 3.30"?
- GLSL 将 uint 转换为浮点颜色
- imageLoad glsl 在计算着色器 OpenGL 4.3 中始终返回 0
- 在 glsl opengl 中将嵌套结构数组作为统一传递
- 接收"Error compiling: 0:1(1): error: syntax error, unexpected $end" C++、GLSL、着色器文件
- GLSL 统一 ivec 未设置,并且在询问时具有默认(错误)值
- 如何在编译器C++不智能的情况下实现 GLSL vec* 构造语法?
- GLSL C++ glVertexAttribPointer & glDrawElements return GL_INVALID_OPERATION
- 在 glsl 中初始化全局变量?
- C++ 在 Vulkan 中发送到 GLSL 的可变长度数组的语法
- 更正GLSL无绑定纹理句柄中的结构布局
- Shaderc在android上调用glsl到spv程序集时崩溃
- 不支持 GLSL 330 内核
- GLSL 将颜色数据从片段着色器发送到顶点着色器似乎总是等于 0
- OpenGL GLSL 片段着色器中的随机数