opengl – 将uint属性传递给GLSL
发布时间:2020-12-14 05:38:08 所属栏目:Windows 来源:网络整理
导读:我试图将一堆连续的无符号整数作为属性传递给我的GLSL着色器. 到目前为止,我想到了 s_number = glGetAttribLocation(shader,"number");numberData = new GLuint[dotAmount];for (GLuint i = 0; i dotAmount; i++) { numberData[i] = i;}glGenBuffers(1,vertB
我试图将一堆连续的无符号整数作为属性传递给我的GLSL着色器.
到目前为止,我想到了 s_number = glGetAttribLocation(shader,"number"); numberData = new GLuint[dotAmount]; for (GLuint i = 0; i < dotAmount; i++) { numberData[i] = i; } glGenBuffers(1,&vertBuf); glBindBuffer(GL_ARRAY_BUFFER,vertBuf); glBufferData( GL_ARRAY_BUFFER,sizeof(dotAmount),numberData,GL_STATIC_DRAW ); 渲染功能是 glUseProgram(shader); [..] glEnableVertexAttribArray(s_number); glBindBuffer(GL_ARRAY_BUFFER,vertBuf); glVertexAttribPointer( s_number,1,GL_UNSIGNED_INT,GL_FALSE,BUFFER_OFFSET(0) ); glDrawArrays(GL_POINTS,dotAmount); 我尝试使用顶点着色器中的数字,如下所示: attribute uint number; (名称’vertBuf’实际上有点误导,因为它不是我要通过的顶点数据) 我想要实现的是,我希望着色器执行dotAmount次.定位在着色器内以数学方式完成.但我得到的只是一个空白屏幕…… 我很确定问题不在于着色器.我想画点,如果我把gl_Position = vec4(0.0,0.0,0.0);在顶点着色器中,我认为它应该绘制一些东西. 解决方法
尝试将片段着色器更改为gl_FragColor = vec4(1,1);这将确保输出颜色使片段可见.
另外,你应该有gl_Position = vec4(0,1); (原因是gl_Position必须是同质坐标,这意味着前三个分量将被第四个分割.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows-xp – 适用于Windows XP的免费DHCP服务器?
- 单元测试 – Windows Phone开发和单元测试
- windows-server-2008-r2 – 更改密码时为什么会出现“拒绝访
- Windows服务 – Windows服务或计划任务,我们喜欢哪一个?
- windows – 是否可以使用Git找到两个任意文本文件之间的区别
- .net – 为Windows服务设置环境变量
- windows-phone-8 – Windows phone 8性能进度条
- winapi – 获取Windows中登录用户的用户名/密码
- 在Windows中创建一个菜单按钮
- 如何备份Windows Azure虚拟机?
推荐文章
站长推荐
- Windows – IIS 7.5及更高版本 – 在补丁KB29926
- windows环境下安装composer,然后使用composer安
- 有没有任何免费的Windows Perl IDE调试?
- 使用cmd制作图片木马
- Windows-8 – 可以在Windows Store应用程序中使用
- windows-server-2008 – 您是否必须运行远程桌面
- windows – USB Stick上的Adobe Air App EXE
- 安装MPI for Windows
- 单点登录 – 为什么ADFS不通过集成Windows身份验
- 使用Microsoft Web Platform Installer安装Umbra
热点阅读