- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作这个需要渲染彩色四边形的程序。为此,我正在使用 VBO。
这就是我存储顶点和颜色数据的方式:
渲染四边形:
buff.put(3 floats color)
render the quad (3 floats per vertex * 4 per face * 6 per quad)
现在如您所见,我的目标是使用交错的 VBO,但我不知道步幅和偏移量。
这是我在渲染时的调用:
(注意我使用的是映射的 vbos,这就是没有实际数据绑定(bind)的原因):
glBindBufferARB(GL_ARRAY_BUFFER_ARB, etn.getVboHandel());
glBufferDataARB(GL_ARRAY_BUFFER_ARB, etn.getVboData().capacity() << 2, GL_STATIC_DRAW_ARB);
glColorPointer(3, GL_FLOAT, /* stride **/6 << 2, /* offset **/0);
glVertexPointer(3, GL_FLOAT, /* stride **/6 << 2, /* offset **/0);
glDrawArrays(GL_QUADS, 0, etn.getVboData().capacity());
我无法获得正确的偏移量和步幅,所以当我渲染时我看到了这个奇怪的人工制品..
最佳答案
步幅是两个元组之间的距离,偏移量是从 0 到第一个元组的第一次出现之间的距离
例如,对于每个位置有 3 个 float 的三角形,然后正常有 3 个 float 的三角形,它看起来像这样
glVertexAttribPointer(0,3, GL_FLOAT, GL_FALSE, 24, 0);
glEnableVertexAttribArray(0);
glVertexAttribPointer(1,3, GL_FLOAT, GL_FALSE, 24, (GLvoid*) (sizeof(float)*3));
glEnableVertexAttribArray(1);
所以你的顶点指针的偏移量为 0(假设前三个条目是位置)和步幅为 24(假设你的顶点颜色直接在顶点位置之后)
对于颜色指针,偏移量将是 (GLvoid*) (sizeof(float)*3)
作为第一个颜色三元组之前的三个 GLfloats
这一切都假设你的交错数组是这样构建的
VVVCCCVVVCCCVVVCCC 等等
对于使用仅具有顶点和法线信息以及面的模型的 C++ 中非常简单的示例,您可以查看以下代码:http://www.incentivelabs.de/Sourcecode/OpenGL10.zip
关于java - OpenGL Interleaved VBO 跨步和偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17000110/
在Java中,有没有办法让线程知道它已经“交错”了? 我想在客户的线程被另一个线程交错后向他们的客户(由单独的线程处理)发送特定的更新。 如果我对“交错”一词的使用不正确,我指的是处理器停止运行一个线
我需要以下类别的功能: class InterleavedHomomorphic x where interleaveHomomorphism :: (forall a . f a -> g a)
获取这两个列表: list 1 红色绿色的蓝色 list 2 棕色红色的蓝色的紫色的橙色 我正在寻找一种方法将这些列表组合在一起以生成: 列表3 棕色红色的绿色的蓝色的紫色的橙色 我认为基本规则是:
假设我有三个表,Foo、Bar 和 Baz CREATE TABLE Foo ( FooId BYTES(MAX) ) PRIMARY KEY (FooId); CREATE TABLE Bar (
我在 java 中实现了这个交错方法,但它不能正常工作。我的错误在哪里?我想混合 2 个字符串列表。 ["a","b","c"] ["1","2","3","4"] 结果应该是 = [a, 1, b,
我正在制作这个需要渲染彩色四边形的程序。为此,我正在使用 VBO。 这就是我存储顶点和颜色数据的方式: 渲染四边形: buff.put(3 floats color) render the qua
我正在为一组文档编辑器(电子表格编辑器、文本文档编辑器、powerpoint 编辑器等)设计架构。编辑们将共享一个数据库,尽管他们有一天可能会使用单独的数据库。每个编辑共享每个文档的许多公共(publ
我正在处理 RGBA32 缓冲区(每个组件 8 位),我需要将每个组件乘以一个常数,然后将每个乘法结果加到其他组件上: Result = r*x + g * y + b * z + a*w(两个 ve
TensorFlow 每晚:1.15.0-dev20190730 filenames = tf.gfile.Glob(data_files_pattern) dataset = tf.data.Dat
interleave是一种 tf.Data.Dataset 方法,可用于将来自多个数据集的元素交织在一起。 tf.contrib.data.parallel_interleave在 apply 的帮助
我已使用 ExtAudioFileRead 函数将音频文件读入 AudioBufferList。 这是音频的 ASBD: AudioStreamBasicDescription importForma
我正在尝试根据 https://hub.docker.com/_/mongo/ 上的官方 repo 为内存中的 MongoDB 创建 Dockerfile . 在 dockerfile-entrypo
比如有来源: void func1() { func3(); if(qqq) { func2(); } func4( ); } 应该转化为:
使用 Thrust 可以直接对交错(即由 vector 支持)数组的 行 求和,如示例 here 所示。 . 我想做的是对数组的列求和。 我尝试使用类似的结构,即: // convert a line
这是我的实现: 客户端 A 为客户端 B 发送消息 服务器通过async_read适量的数据处理消息和将等待来自客户端 A 的新数据(为了不阻止客户端 A) 之后服务器会处理信息(可能会做一个mysq
尝试搜索和检查 Google 文档,但我仍然无法获得我想要的这个问题的结果。 我需要拆分几个以逗号分隔的项目列表并重新组合它们,以便组合每个列表中的第一个项目,然后是第二个项目,依此类推。 用插图问,
我正在尝试编写一个视频/音频配音编辑器。尝试在 vala/genie 中混合多个音频文件。使用加法器或交错。 我需要将此 gst-launch 命令转换为 Genie 或 Vala 代码,但使用: 1
我想实现 Logoot对于最终收敛的 P2P 文本编辑,我遇到了一些问题。 我对 Logoot 的理解是,对象(原论文中的文本行,但可以是字符或单词)之间的间隔可以无限分割,因为标识符是无限的。这意味
有什么区别 CREATE INDEX SongsBySingerSongName ON Songs(SingerId, SongName), INTERLEAV
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我是一名优秀的程序员,十分优秀!