Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用单个光源渲染三维立方体的最简单方法是什么?_C_Opengl_Graphics_3d - Fatal编程技术网

C 使用单个光源渲染三维立方体的最简单方法是什么?

C 使用单个光源渲染三维立方体的最简单方法是什么?,c,opengl,graphics,3d,C,Opengl,Graphics,3d,下面描绘的是一个蹩脚的Photoshop三维立方体模型 以下是我的参数:解决方案必须 。。。在我小巧但忠实的MacBookAir上编译和运行,而不使用wine之类的Windows模拟器 。。。在运行时生成一个与上述模型相当接近的窗口 。。。只使用免费工具(“言论”和“啤酒”中的“免费”) 。。。使用C(非C++或C语言) 。。。能够从编译时定义的不同角度渲染多维数据集,可能使用预处理器宏 。。。利用GPU 威伊 潜在资源: 您需要从OpenGL开始。这是唯一完全符合这个要求的东西。也

下面描绘的是一个蹩脚的Photoshop三维立方体模型

以下是我的参数:解决方案必须

  • 。。。在我小巧但忠实的MacBookAir上编译和运行,而不使用wine之类的Windows模拟器
  • 。。。在运行时生成一个与上述模型相当接近的窗口
  • 。。。只使用免费工具(“言论”和“啤酒”中的“免费”)
  • 。。。使用C(非C++或C语言)
  • 。。。能够从编译时定义的不同角度渲染多维数据集,可能使用预处理器宏
  • 。。。利用GPU
威伊

潜在资源:


您需要从OpenGL开始。这是唯一完全符合这个要求的东西。也就是说,如果您以前从未编写过C代码。。。这将是一个沉重的开始


在使用OpenGL和图形之前,我会先访问和学习C。

我会去Nehe教程,1-5。到#5时,您将在OpenGL中渲染上述立方体

这些教程都是纯C语言的,但它们在页面底部有指向端口的链接,这些端口几乎适用于您可能想要使用的每种语言


NeHe教程已经过时,无法编译,因此我写了一个符合我问题所有参数的工作片段来回答我自己的问题

它可以在OS X 10.9.2上编译,如下所示:

$gcc-Wall-framework OpenGL-framework GLUT-o my3dcube my3dcube.c


它大量改编自中的代码和Mark Stevens答案中链接的NeHe教程。

地球上几乎所有OpenGL教程都涵盖了这一点@DietrichEpp-非常感谢您的意见!但是,如果谷歌搜索“opengl教程”足以让我立即看到结果,我就不会发帖问这个问题了。我得到的第一个链接是NeHe,传统教程将在第5课之前引导您完成立方体的制作。而且他们有OSX代码可用。我以前也偶然发现过这些教程;请参阅马克·史蒂文斯答案中的评论线索,了解这是如何产生的……所以使用可可豆是不可接受的?然后使用SDL或GLUT。两者在OS X上都可以很好地工作。源代码仍然可以从NeHe获得,但您可能需要调整OS X的构建系统。(为什么Cocoa不可接受?)对不起,我应该更清楚地回答我的问题:我已经知道C,事实上我以前使用过SDL。我将这个问题添加到StackOverflow中,因为我在这里没有看到一个好的现有示例;即使最好的答案只是一个链接到一个真正坚实的教程,这将是一个很好的让SO涵盖更多的领域。谢谢,看起来这可能是完美的。我一直看到人们到处谈论“nehe”,但我忽略了教程链接,因为他们把它们放在“Legacy”标题下。我想我应该更大胆些!隐马尔可夫模型。。。看起来这个教程假设你在Windows上使用Visual C++,这意味着它可能会使我的问题参数失效。我会继续阅读,看看在使用OSX和C时,兔子洞到底有多远。是的,它们是传统的,因为它们不使用现代着色器技术。但它们仍然工作得很好,满足您的要求。在“立方体”之后,您可能想看看着色器,但无论如何,您都需要一个完整的OpenGL C程序来承载着色器。本教程将引导您通过VC++,但在底部有指向几乎所有其他编译器/操作系统的端口的链接,包括两个不同的MAC版本。啊,抱歉。我想也许这就是他们所谓的“遗产”的真正含义。