OpenGL/通用图形的最佳动态语言

2024-06-07 07:14:32 发布

您现在位置:Python中文网/ 问答频道 /正文

在编写图形程序时,哪种解决方案最成熟、最受支持?在

我一直使用OpenGL/GLUT的C++,但希望尝试一种更灵活和富有表现力的方法。在

红宝石和加工?Python和食人魔?哪些事情对你很有效?在


Tags: 方法程序图形解决方案事情opengl表现力glut
3条回答

如果您只是对实验感兴趣,我建议您为您已经熟悉的动态语言选择一个带有绑定的3D框架。在

一、三年前,我开始用Ruby/OpenGL做实验,这很容易操作。在

如果你真的想建立一个项目(无论出于什么原因),我建议你选择一个基于

  • 实现它的本机语言(或运行它的运行时)
  • 引擎或运行时可用的动态语言绑定
  • 框架许可证

如果你想让你的项目在不同的操作系统上很容易地运行,你可能需要选择一个用Java编写的框架(因为jRuby到处都有jRuby)或JavaScript绑定(因为这些语言在那里得到了很好的支持)。但是,这会限制您可用的框架。(这是我对OSS+linux的偏见)。在

维基百科有一个list of game engines。基于几个标准,我用jMonkeyEngine(v2)启动了一个项目,发现使用Rhino(jvmjavascript实现)进行操作和控制很容易。在

我最近看到了另一个基于Java的框架的演示文稿,其中包含了几种语言的绑定,看上去非常酷(受食人魔引擎的启发),但是我忘记了它的名称,在列表中找不到它。在

在做C的时候,我确实考虑过针对dotNet和Mono的跨平台运行的项目/框架,但是要获得(Tao?)的开发版本太麻烦了框架和MonoLua绑定正在运行。也许事情变了。在

总而言之,选择一个框架,该框架可以在您想要的环境中运行,并为您想要使用的动态语言绑定。即使可用于您想要使用的动态语言的框架库代码相当少,但如果您可以使用底层语言,则可以轻松地对其进行扩展。如果你精通C++,java和C就不应该太过简单。在

如果你熟悉C++,你可以试试Lua。LUA是一种可以嵌入任何C/C++程序中的动态语言。它在游戏行业很受欢迎。在

我想把Python用PyOpenGL作为一个选项来考虑。在

如果您已经熟悉OpenGL,那么PyOpenGL基本上是一个用Python编写的API包装器。起初,我很惊讶代码在Python和C++中看起来是多么相似。像这样(注意,我还使用了Pyglet):

def setup_render(self):
    '''First rendering setup'''
    glClearColor(0.0, 0.0, 0.0, 1.0) 
    glClearDepth(1.0)       

    glEnable(GL_LIGHTING)       
    glEnable(GL_DEPTH_TEST)    
    glEnable(GL_ALPHA_TEST)         
    glEnable(GL_CULL_FACE)              

def draw(self, time_passed):
    '''Drawing events'''
    if self.has_exit:
        pyglet.app.exit()
        return

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
    glUseProgram(self.shader.program)
    self.set_lights()

    # Draw objects here
    glTranslate(0, 0, -10)
    glScale(5.0, 5.0, 5.0)
    glutSolidSphere(1, 16, 16)
<>看看它与C++代码有多么相似。在

我能够在Python中快速使用PyOpenGL,并实现了一个不超过200行的四元数类。如果您对Python很熟悉,我会毫不犹豫地推荐您去看看。在

顺便说一句,PyOpenGL's API documentation也比official one更具可读性。在

相关问题 更多 >