首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL建模

OpenGL建模
EN

Stack Overflow用户
提问于 2012-09-22 05:15:23
回答 1查看 240关注 0票数 0

我正在尝试创建程序,将允许我从Collada格式转换为我自己的自定义格式(这部分很容易控制)。我想做的事情如下。

1.)在给定从Collada文件解析的确切数据的情况下,找到一种方法来绘制模型。a.)一个简单的立方体将生成8个顶点,36个法线和12个纹理坐标,这是发现,但唯一的方法,我可以找到OpenGL绘制这需要我复制顶点和法线的数据,以便匹配法线的数量。

2.)找到一种实现多纹理的方法。a.)我找到了很多关于这方面的教程,但我似乎找不到一种真正使用它的方法。这些函数似乎没有内置到我的openGL版本中(我已经在两台计算机上尝试过了),也没有人记录我可能缺少的任何所需的dll。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-22 08:33:21

一个简单的立方体将生成8个顶点,36个法线和12个纹理坐标,

不,一个简单的立方体有8个位置,但一个顶点不仅仅是一个位置,还包含所有其他属性。所以实际上没有发生顶点重复,但你是对的,你会在属性中有一些冗余。

更新以解释,为什么会这样

顶点是其属性的整个向量。换一个,你就会得到一个完全不同的顶点。

假设您有一个顶点着色器,它接受一些纯抽象属性和一个纹理坐标

代码语言:javascript
复制
#version 150

attribute vec2 foobar;
attribute vec4 fnord;
attribute vec2 texcoord;

这个顶点着色器根据这些属性计算一些位置,比如

代码语言:javascript
复制
void main() {
    gl_Position = vec3(fnord.xw, dot(foobar,texcoord));
}

如您所见,顶点位置现在直接取决于所有属性。当然,其他变体也可以。

为了保存冗余计算,GPU维护从顶点属性输入到变换阶段/顶点着色器输出的缓存映射。如果顶点是通过索引间接访问的,那么缓存实际上使用索引作为键。

因此请记住:如果与顶点关联的任何内容发生更改,您将更改整个顶点。在现代OpenGL中,顶点的属性,甚至位置,最终可能会做非常不同的事情。

我的openGL版本中似乎没有内置这些函数

哦,他们可能是你的司机的一部分,好吧。您可能只是没有将它们加载到您的程序中。OpenGL DLL只涵盖了最基本的内容。对于其他任何情况,您必须动态加载函数指针。只需使用像GLEW这样的很好的包装器(可从http://glew.sourceforge.net获得)。

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

https://stackoverflow.com/questions/12538261

复制
相关文章

相似问题

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