gpt4 book ai didi

opengl - 如何通过 C++ 代码将统一的结构数组传递给着色器

转载 作者:行者123 更新时间:2023-12-03 20:18:14 25 4
gpt4 key购买 nike

例如。
在 FragmentShader 中:-

struct LightSource
{
int Type;
vec3 Position;
vec3 Attenuation;
vec3 Direction;
vec3 Color;
};

uniform LightSource Light[4];

main(){
//somecode
}

现在我如何发送 Light[4] 的值.

最佳答案

您将需要获取每个数组元素的结构的每个字段的位置,并分别发送值。请参阅 OpenGL wiki 页面以供引用:https://www.khronos.org/opengl/wiki/Uniform_(GLSL)#Uniform_management .

例如,要设置 Light[0].Type 的值,您可以执行以下操作:

GLuint loc = glGetUniformLocation(shader_program_id, "Light[0].Type");
glUniform1i(loc, value);

关于opengl - 如何通过 C++ 代码将统一的结构数组传递给着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23591264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com