nvidia cg工具包的python包装
python-cg的Python项目详细描述
什么是python cg?
python cg是 NVidia Cg Toolkit运行时。我开始它是因为我喜欢python,我喜欢nvidia cg,我想做一些电脑游戏/3d图形打印和研究。此外,我仍然发现C++对我的需求产生反作用,我不想浪费我的时间做无聊的事情。用python编程很有趣。
我知道有些项目本来打算将cg引入python,但据我所知,它们现在已经成为历史。
项目位于github:https://github.com/jstasiak/python-cg的hostead。
什么州?
该项目正处于早期开发阶段。当前支持的功能概述:
- CG上下文
- 创建
- 销毁
- cgfx效果
- 从文件创建
- 直接从源代码创建
- 访问特效技术及其过程
- 访问带有名称、语义和参数特定元数据(行、列等)的效果参数
- 设置采样器参数和大多数数值参数
目前不起作用且没有实施计划的内容:
- 剩下的一切(好吧,直到我决定需要一部分或是其他人来做)
要求
此项目需要:
- 英伟达CG工具包≥3.0
- python解释器(+开发文件):
- 2.x≥2.6,或
- 3.x≥3.2
构建和安装python cg所需的python包:
- cython≥0.18
- 努比
要生成文档/运行测试,您还需要:
- 模拟≥1.0
- 鼻≥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和OpenGL一起工作
- 它默认使用行主矩阵,就像numpy那样
快速启动
from cg import CG cg = CG() context = cg.create_context()
我们想用效果来渲染一些东西,所以我们要创建 Effect来自文件:
effect = context.create_effect_from_file('effect.cgfx')
注意
这假设您有一个名为effect.cgfx的文件,并且它包含 有效的CG效果。
我们现在可以访问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的开发版本
python包列在example/requirements.txt:
pip install -r example/requirements.txt
然后运行示例:
python setup.py build_ext --inplace PYTHONPATH=. python example/main.py
测试
要运行测试,请执行:
python runtests.py