首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用着色器在OpenGL中显示多个立方体

用着色器在OpenGL中显示多个立方体
EN

Stack Overflow用户
提问于 2011-10-13 02:33:13
回答 1查看 1.6K关注 0票数 0

我是OpenGL和着色器的新手。我有一个项目,涉及使用着色器显示立方体。

基本上,我应该用(+-10,+-10,+-10)的透视投影来显示8个立方体,每个都是不同的颜色。换句话说,会有一个立方体中心在(10,10,10),另一个中心在(10,10,-10),等等。在(+-10,+-10,+-10)中有8个组合。然后,我应该提供一个key命令'c‘,它可以在每次按下键时改变所有立方体的颜色。

到目前为止,我还能在原点做一个立方体。我知道我应该使用这个立方体并翻译它来创建八个立方体,但是我不知道我该怎么做。有人知道我会怎么做吗?

EN

回答 1

Stack Overflow用户

发布于 2011-10-14 12:24:45

如前所述,这个问题太宽泛了。但是你说你画了一个立方体,所以我可以假设你可以设置相机和窗口。这就让我们知道如何渲染8个立方体了。有很多方法可以做到这一点,但我会提到两个非常不同的方法。

经典版:让函数包含两个参数--立方体中心和大小。在这2中,您可以像现在一样构建多维数据集,但是不用固定的值,而是使用这些变量。例如,正面是:

代码语言:javascript
复制
glBegin(GL_TRIANGLE_STRIP);
glVertex3f(center.x-size/2, center.y-size/2, center.z+size/2);
glVertex3f(center.x+size/2, center.y-size/2, center.z+size/2);
glVertex3f(center.x-size/2, center.y+size/2, center.z+size/2);
glVertex3f(center.x+size/2, center.y+size/2, center.z+size/2);
glEnd();

这只是为了展示如何利用变量来实现它,您可以像现在这样做。

你说过你想用着色器。阴影主题非常广泛,就像openGL本身一样,但我可以告诉你这个想法。在openGL 3.2中添加了称为几何学的特殊着色器。他们的目的是与整体几何一起工作-相反,顶点着色器在时间上只工作一个顶点,或者碎片着色器在时间上只工作一个片段-几何图形着色器与一个几何图形同时工作。如果你是渲染三角形,你会得到所有的信息,单一的三角形,只是通过着色。这不会是什么严重的,但这些着色器不只是修改这些几何,他们可以创建新的!所以我在我的一个着色程序中,我渲染点,但是当它们通过几何图形着色器时,这些点被转换成圆圈。同样,你可以渲染点,但在几何图形着色器中你可以渲染整个立方体。点位置作为这些立方体的中心位置,你应该以均匀的方式传递立方体的大小。如果多维数据集的大小可能会变化,则还需要制作顶点着色器,将大小从属性传递到变量,这可以在几何图形着色器中读取。

至于颜色问题,如果您没有实现片段着色器,只需要在呈现多维数据集之前调用glColor3f。它需要3个参数-红色,绿色和蓝色的值。请注意,这些值的范围不是从0到255,而是从0到1。如果使用白色背景,并且认为当您将颜色设置为200,10,10时,您应该看到红色的多维数据集,但是看不到任何东西,您可能会感到困惑。那是因为实际上你呈现的是白色立方体。为了避免这样的错误,我建议将背景设置为灰色whit glClearColor

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7748837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档