跳转到主要内容

NVIDIA Cg工具包的Python包装器

项目描述

Build status

什么是python-cg?

python-cg 是NVIDIA Cg Toolkit运行时的Python包装器。我开始做这个项目是因为我喜欢Python,我喜欢NVIDIA CG,并且我想做一些计算机游戏/3D图形原型设计和研究。另外,就我的需求而言,C++效率不高,我不想浪费时间在无聊的事情上。用Python编程很有趣。

我知道一些项目旨在将CG引入Python,但据我所知,它们现在都已经不复存在了。

项目托管在GitHub上:https://github.com/jstasiak/python-cg

当前状态?

项目处于非常早期的开发阶段。目前支持的概述

  • Cg上下文

    • 创建

    • 销毁

  • CgFX效果

    • 从文件创建

    • 直接从源代码创建

  • 访问效果的技巧及其遍历

  • 通过名称、语义和特定于参数的元数据(行、列等)访问效果参数

  • 设置采样器参数和大多数数值参数

目前无法工作且没有计划实现的功能

  • 剩下的一切(嗯,直到我决定需要它或者其他人这样做为止)

需求

此项目需要

  • NVIDIA Cg Toolkit ≥ 3.0

  • Python解释器(+开发文件)

    • 2.x ≥ 2.6,或者

    • 3.x ≥ 3.2

  • C和C++编译器

构建和安装 python-cg 所需的 Python 包

  • Cython ≥ 0.18

  • numpy

为了构建文档/运行测试,你还需要

  • Mock ≥ 1.0

  • Nose ≥ 1.2

  • Sphinx ~ 1.2 (开发版本)

文档

预生成的文档可以在 https://python-cg.readthedocs.org/en/latest/ 找到。

你也可以通过调用以下命令自行构建文档

sphinx-build -b html docs docs/build/html

生成的 HTML 文件放置在 docs/build/html/ 目录中。

构建

要在本地构建项目,请运行

python setup.py build_ext --inplace

重要信息

  • 本项目仅与 OpenGL 兼容

  • 默认使用行主序矩阵,与 numpy 相同

快速入门

首先你需要创建 CG 类的实例,并使用它来创建新的 Context

from cg import CG

cg = CG()
context = cg.create_context()

我们想要使用一个效果来渲染一些东西,所以我们将从文件创建 Effect

effect = context.create_effect_from_file('effect.cgfx')

我们现在可以访问 Effect 的技术和参数

for technique in effect.techniques:
   # ...

for parameter in effect.parameters:
   # ...

为了简化,假设我们有一个无参数效果,只有一个 Technique

technique = effect.techniques[0]

现在我们可以访问技术的方法。每个 Pass 都有 begin()end() 方法,实际绘图必须在调用 beginend 之间进行

gl.glClear(gl.GL_COLOR_BUFFER_BIT)

for pass_  in technique.passes:
   pass_.begin()


   gl.glBegin(gl.GL_TRIANGLES)
   gl.glVertex3f(-0.5, -0.5, 0)
   gl.glVertex3f(0.5, -0.5, 0)
   gl.glVertex3f(0, 0.5, 0)
   gl.glEnd()

   pass_.end()

# swap buffers

你可以在 example 目录中找到一个完整、可运行的示例应用程序。请注意,它需要(除了 python-cg 的需求外)

  • SFML 2 的开发版本

  • example/requirements.txt 中列出的 Python 包

    pip install -r example/requirements.txt

然后运行示例

python setup.py build_ext --inplace
PYTHONPATH=. python example/main.py

测试

要运行测试,请执行

python runtests.py

许可证

© 2013, Jakub Stasiak

本项目采用 MIT 许可证,有关详细信息,请参阅 LICENSE 文件。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码分发

python-cg-0.1.3.tar.gz (66.0 kB 查看散列)

上传时间 源代码

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面