NVIDIA Cg工具包的Python包装器
项目描述
什么是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() 方法,实际绘图必须在调用 begin 和 end 之间进行
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 文件。