添加到场景OpenGL

时间:2017-05-05 18:36:39

标签: c++ arrays opengl

我正在尝试创建一个简单的函数,将openGL代码添加到我的MainLoop中。

例如,使用Msg 3621, Level 0, State 0. The statement has been terminated. Msg 537, Level 16, State 2. Invalid length parameter passed to the LEFT or SUBSTRING function. (Line 35)

我正在尝试使用数组执行此操作,但它并不像我所拥有的那样工作。

代码:

win->AddToScene("glBegin(GL_TRIANGLES); glVertex3f( 0.0f, 1.0f, 0.0f); glVertex3f( 1.0f,-1.0f, 0.0f); glVertex3f(-1.0f,-1.0f, 0.0f); glEnd(); ");

阵列是一种方法吗,还是我必须完全做其他事情?

由于

1 个答案:

答案 0 :(得分:1)

创造力的道具。仅仅是因为您想要做的事情在解释语言中也不会用那种方式。在那些你必须使用一些collectionView声明。

应该注意的是,完全可以在C中为小型自定义玩具语言(或者更确切地说是命令执行列表)实现解释器,完全按照您的设想。

然而,就为场景添加几何图形而言:你正在咆哮完全错误的树!一个场景只包含 而不是如何它被绘制。你在思考的错误是,你把eval电话误认为是重要的。实际上重要的是进入的数字。

想想这样的事情:

glVertex

然而,所有这些函数调用都是超级低效的。你真正想做的就是这个,即使用 Vertex Arrays

glBegin(…);
for(size_t i = 0; i < vertices.length(); ++i){
    glVertex3f(vertices[i].x, vertices[i].y, vertices[i].z);
}
glEnd();

最后一步是删除旧式OpenGL函数并转换为通用顶点属性和顶点缓冲对象;但是,掌握旧式顶点数组后,这很容易。