代码拉取完成,页面将自动刷新
同步操作将从 Time-Coder/Glass-Engine 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Glass 为 Glass Engine 的子项目,为 OpenGL Assistant 的缩写。 OpenGL 函数的底层接口的设计为了跨平台,牺牲了易用性。 为了使 OpenGL 的调用对 Python 用户更友好,封装了 Glass 库。 该库简化了大量 OpenGL 概念以及函数调用方法,几项重点简化包括:
include
,并将报错行号指向真实的 include 文件;下面是一段不完整的代码展示了 glass 操作 OpenGL 的方法:
from glass import *
# 在一个合法的 OpenGL 上下文中:
# 创建 shader 程序
program = ShaderProgram()
program.compile("path/to/vertex_shader.vs")
program.compile("path/to/fragment_shader.fs")
# 上述两个 compile 并不会每次运行都编译,仅首次以及 Shader 文件修改后才编译
# shader 文件中可含有 #include 语法
# 将 Python 变量 pyvar 直接赋值给 Shader 端的 Uniform 结构体变量 uniform_var
# 只要 Python 变量中含有对应的属性
program["uniform_var"] = pyvar
# 纹理 uniform 变量可用如下方法赋值
# 对用户隐藏纹理单元概念
program["sampler_var"] = sampler2D("path/to/image.png")
# 创建顶点数组
vertices = Vertices() # 像 list 一样操作 vertices,只不过元素只能为 Vertex 类型
# 添加顶点
vertices.append(Vertex(position=glm.vec2(-0.5,-0.5), color=glm.vec3(1,0,0)))
vertices.append(Vertex(position=glm.vec2(0.5,-0.5), color=glm.vec3(0,1,0)))
vertices.append(Vertex(position=glm.vec2(0,0.5), color=glm.vec3(0,0,1)))
# 构建顶点 Vertex 时,属性名可为任意值
# 只要在 vertex shader 中的 layout 指定了该属性名并且类型匹配
# 创建索引数组
indices = Indices() # 像 list 一样操作 indices,只不过元素只能为 glm.uvec3 类型
indices.append(glm.uvec3(0, 1, 2))
# 绘制三角形
program.draw_triangles(vertices=vertices, indices=indices)
# vertices 和 indices 可在任意时刻动态修改内部元素,以及动态增加删除元素
# 所有修改将在下次绘制时同步到显存
你可以在任意需要使用 OpenGL 的地方使用 Glass, 但其初衷是为 Glass Engine 提供 OpenGL 的封装,因此不过多介绍 Glass 的用法,欢迎访问 Glass Engine 项目:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。