glsl双精度顶点缓冲区 [英] glsl double-precision vertex buffer

查看:236
本文介绍了glsl双精度顶点缓冲区的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我创建一个双精度顶点缓冲区,例如:

If I create a double-precision vertex buffer, for example:

GLuint vertBuffer, spanBuffer, spanCount, patchSize, program; // already setup
glUseProgram (program);
glEnableClientState (GL_VERTEX_ARRAY);
glBindBuffer (GL_ARRAY_BUFFER, vertBuffer);
glVertexPointer (3, GL_DOUBLE, 0, 0);
glPatchParameteri (GL_PATCH_VERTICES, patchSize);
glBindBuffer (GL_ELEMENT_ARRAY_BUFFER, spanBuffer);
glDrawElements (GL_PATCHES,  spanCount * patchSize, GL_UNSIGNED_INT, 0);

如何在顶点着色器中访问双精度数据?我应该能够做到吗?

How do I access the double precision data in my vertex shader? Should I be able to do this?

// GLSL VERTEX SHADER
#version 410

in dvec4 gl_Vertex;

void main ()
{
<snip>

推荐答案

您没有.至少不是那样.

You don't. At least, not that way.

如果要使用OpenGL 4.x +将双精度值读入着色器的功能,则必须使用通用顶点属性.您不能再使用旧的固定功能gl_VertexglVertexPointer.您必须使用 glVertexAttribLPointer ,并带有适当的通用顶点属性索引.

If you want to use OpenGL 4.x+'s ability to read double-precision values into your shader, then you must use generic vertex attributes. You can't use old fixed-function gl_Vertex and glVertexPointer anymore. You must use glVertexAttribLPointer, with a proper generic vertex attribute index.

这篇关于glsl双精度顶点缓冲区的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆