【发布时间】:2011-05-20 00:52:08
【问题描述】:
我想在 opengl 中创建 32x32 位图的立方体模型。例如,给定超级马里奥的 Bob-omb 的 2D 位图,结果应如下所示:http://fc02.deviantart.net/fs49/f/2009/186/f/a/Bob_omb_in_Minecraft_by_Luafox.png 这个想法是将位图中的每个 2D 像素表示为 3D 立方体。
每个模型都将代表游戏中的一个敌人,因此我需要能够快速渲染这些模型。这样做的好方法是什么?
我所做的一个尝试是从位图生成静态 3D 模型,首先创建一个 32x32x2 的顶点网格,然后在适当的位置从这些顶点创建三角形以形成立方体面。我遇到的一个大问题是如何存储面部的颜色和法线。每个面的三角形需要共享一个顶点,并且该共享顶点需要存储该面的颜色和法线。但是,我认为我没有足够的顶点让每个面都具有适当的颜色和法线。我想不出一个优雅的方法来解决这个问题。
【问题讨论】:
-
这是为了游戏。我想要看起来像这样的敌人。
-
你确定你在问正确的问题吗?最后你已经告诉了你是怎么做到的,然后问了一个不同的问题。
-
您可以逐行循环遍历非透明像素,如果该位置已经没有顶点,则每个像素将 4 个顶点推送到您的数组。以类似的方式,您可以为每个像素插入 4 个顶点并在插入所有顶点后,删除重复项。另一种方法是跟踪当前行上方的现有像素,并且仅在它们是新的时插入顶点。这应该为您提供这些正面顶点,您可以在 Z 上克隆和偏移它们以获得背面,然后循环穿过“边缘”顶点以“缝合”顶部、底部、左侧、右侧的面。看看这个:bit.ly/fQuB5H
-
我正是以这种方式完成了康威的生命游戏……见照片:smoothjazzy.com/image_display.html?img=screensaver/scr_2.jpg - 如果你真的想要我,我可以挖掘代码,这都是 OpenGL。跨度>