nvidia cg工具包的python包装

python-cg的Python项目详细描述


Build status

什么是python cg?

python cgNVidia 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
  • C和C++编译器

构建和安装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那样

快速启动

首先,您需要创建 CG类并使用它创建新的 Context

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()以及 绘图必须在调用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的开发版本

  • python包列在example/requirements.txt

    pip install -r example/requirements.txt
    

然后运行示例:

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

测试

要运行测试,请执行:

python runtests.py

许可证

2013年,雅库布·斯塔西亚克

此项目是在mit许可下授权的,有关详细信息,请参见LICENSE文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JLabel,将包装好的HTMLtext作为JScrollPane客户端   如何使用java程序运行命令提示符命令?   java SPINNER通信和结果   向Ruby编写C扩展的java好处   将原语数组从java传递到c   java如何读取图像,在其上绘制并保存结果?   java使用字符串。替换()以替换斜杠,即“\”   获取有关Java标准浏览器的信息   java是否可以将方法参数传递给方法上的注释?   java Spring启动两个数据库   java如何模拟不是由类的某些依赖项完成的方法调用?   java在RPM依赖项中指定替代项   java映射映射<接口,接口>与Hibernate   java JPQL按纬度和经度获取最近的记录   在java中查询xml的最快方法   java如何检测Unix终端字符编码?   java JAR文件NoClassDefFoundError   安卓在java中修改类的静态成员