opengl - 我想使用 openGL 制作一个简单的 3D 游戏,我应该从哪里开始?

标签 opengl 3d modeling

我发现通过榜样我学得最好。是否有一个好的网站或代码库可以展示事件处理、碰撞检测、建模和基本 3D 绘图的工作原理?

我尝试开始的游戏是一个简单的赛车游戏,用户控制一艘小型 spaceship 并穿过 channel 、小行星带、太空殖民地和各种其他障碍(我知道,真正的原创)。运动是三维的。游戏应该知道航天飞机何时撞到障碍物。与大多数赛车游戏中一样,有定义的赛道(赛道和线性路径)。

按箭头键应该会导致方向矢量适当旋转。此外,例如,当用户按下空格键时,飞船应该使用加力燃烧室之类的东西。上下移动也是一种选择。

最佳答案

如果你想学习OpenGL,我建议从“OpenGL Red Book”开始,然后看NeHe's samples 。红皮书至少在线 HTML 格式是免费的,还有可下载的 PDF。

不过,红皮书和NeHe主要教你如何使用OpenGL;编写游戏是一门艺术,有太多的东西需要解释、太多的东西需要学习、太多的东西需要阅读。这只是一个提示。

这是大多数游戏的基本结构。希望它对基础知识有所帮助。当然,这不是一个完整的游戏,不会运行,并且很大程度上取决于你如何做事,但它应该给你一个基本的想法。

void update(float k)
{
  // k == time in seconds since last update; e.g. 0.02
  ship.y += ship.speed_y*k;
}
int main()
{
   while(1)
   {
      if(hasEvents())
      {
        event_t evt;
        getEvent(&evt);
        if (evt.type == keypress && evt.key==down) 
        {
           ship.speed_y=1;
        }
      }
      paint();
      new_ticks = get_ticks();
      update((new_ticks - old_ticks)/1000.);
      old_ticks = new_ticks;
   }
}

关于opengl - 我想使用 openGL 制作一个简单的 3D 游戏,我应该从哪里开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1486097/

相关文章:

c - 为什么我转换为float时gcc总是报错?

c++ - 如何获得 glm::mat4 的镜面反射?

java - LWJGL 只旋转一个物体

python - 在 python 中用 3D 表面覆盖 2D 图

JSON 建模方法

3d - 如何在 OpenSCAD 中放置对象(使其在 Z 轴上齐平以进行 3D 打印)

opengl - 相当于在 GPU 内存上运行的 glDrawpixels 吗?

c++ - 在着色器程序中重新编译、重新链接、顶点着色器

browser - 哪家公司/平台/浏览器将率先提供高质量的原生 3D 支持?

modeling - 用于LP/MILP建模的最佳建模语言? (不是求解器)