C++ 如何创建;“无限”;使用OpenGL的世界

C++ 如何创建;“无限”;使用OpenGL的世界,c++,winapi,opengl,C++,Winapi,Opengl,我需要使用OpenGL创建GameOfLife,我有一个问题。此模拟中的整个世界是100x100个单元,但左边缘和右边缘必须连接,并且上/下边缘也必须连接。问题是我如何使用摄像机来显示它,因为当右边的边缘在窗口的中间时,我只看世界的右边,但是我也应该看左边的部分。 任务的规格是:C++的OpenGL 1.1,WinApi和GLOXOO< P>使用一个将你的世界坐标转换到内部的着色器。由于您使用的是正交投影,在片段着色器中使用模计算应该很容易完成。好吧,因为世界上只有100x100个,我假设杀手级

我需要使用OpenGL创建GameOfLife,我有一个问题。此模拟中的整个世界是100x100个单元,但左边缘和右边缘必须连接,并且上/下边缘也必须连接。问题是我如何使用摄像机来显示它,因为当右边的边缘在窗口的中间时,我只看世界的右边,但是我也应该看左边的部分。

任务的规格是:C++的OpenGL 1.1,WinApi和GLOXOO

< P>使用一个将你的世界坐标转换到内部的着色器。由于您使用的是正交投影,在片段着色器中使用模计算应该很容易完成。

好吧,因为世界上只有100x100个,我假设杀手级图形不是优先级(彩色方块?),只渲染场景两次应该不会太难,对吗?例如,如果摄影机仅注视右边缘,请仅绘制场景最右侧的正方形,然后立即在屏幕边缘右侧绘制该屏幕最左侧的正方形。然后,当摄影机延伸超过栅格边界时,将摄影机的x值减去(或者,如果要向左,则添加)100。它将是无缝的,你将得到你想要的效果——除非我遗漏了什么,在这种情况下告诉我

另一个选项是将生活游戏渲染为纹理,并将该纹理(设置为沿两个轴重复)渲染到屏幕上。这可能是一个更简单、更快的选择。只需将rgb数据写入缓冲区(字节数组,长度为3*3*100*100),然后将该字节数组映射到纹理。你可能会找到大量关于如何做到这一点的教程——包括nehe.gamedev.com遗留教程(顺便说一句,nehe是一个很好的资源)


如果选择纹理方法,也不需要任何摄影机数学。只要更改四边形上贴图的纹理坐标,它就会自动换行。

您尝试了什么?(听起来像是家庭作业)。如果你想学习opengl,这是一个教程,你应该停下来继续学习另一个教程,即时模式是不推荐的,所以你甚至不应该把它作为学习的起点。是的,这是我的家庭作业,我知道我不应该学习这么过时的技术,但如果这是我的主题,我能做什么呢?你当然可以寻求帮助,即使是家庭作业,但你应该展示你已经做过的事情,以及你有问题的地方。我不想直接得到帮助,我只想得到一个提示,也许是一些功能,其他我自己可以找到的。我的老师不是一个乐于助人的人……嗯,我想这是一个简单的方法,但我不能在这个程序中使用着色器(sry我之前没有告诉过),我应该只使用basic而不使用任何扩展。也许这很重要,但我的相机一次只能移动一个细胞的大小。@user2176624:这听起来像是老师或教授给你的作业。如果是这样,请告诉您的老师/教授/助教,OpenGL的固定函数管道已经被弃用了大约10年了,现代OpenGL只使用着色器,计算机图形学领域的雇主希望对着色器编程有深入的了解,而固定函数管道现在只具有历史意义。所以你不应该使用扩展和基本的“核心”配置文件?那么我建议您使用OpenGL-3核心配置文件:没有固定的函数,您必须使用着色器。