OpenGL4.6 向 vertex shader 传递 double 类型数据

参考  https://computergraphics.stackexchange.com/questions/6256/double-precision-in-shader

    GLuint VBO;
    glGenBuffers(1, &VBO);
    glBindBuffer(GL_ARRAY_BUFFER, VBO);
    glBufferData(GL_ARRAY_BUFFER, sizeof(color), color, GL_STATIC_DRAW);
    glVertexAttribLPointer(1, 1, GL_DOUBLE, sizeof(GLdouble), (void*)0); 
    glEnableVertexAttribArray(1);

注意要用glVertexAttribLPointer,而不是glVertexAttribPointer(会导致传递无效)。

vertex shader:

#version 460 core

layout (location = 0) in vec3 aPos;
layout (location = 1) in double V;

uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;

out vec4 pcolor;

void main()
{
    gl_Position = projection * view * model * vec4(aPos, 1.0f);
    pcolor = vec4(vec3(V), 1.0);
}

另外,传递int类型数据需要用 glVertexAttribIPointer

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值