python编程画三角形(python绘制三角形的程序)

http://www.itjxue.com  2023-03-24 15:25  来源:未知  点击次数: 

Python之OpenGL笔记(5):OpenGL着色器语言(GLSL)应用画三角形

1、修改顶点着色器让三角形上下颠倒;

2、使用uniform定义一个水平偏移量,在顶点着色器中使用这个偏移量把三角形移动到屏幕右侧。

??着色器是使用一种叫GLSL的类C语言写成的。GLSL是为图形计算量身定制的,它包含一些针对向量和矩阵操作的有用特性。

??着色器的开头总是要声明版本,接着是输入和输出变量、uniform和main函数。每个着色器的入口点都是main函数,在这个函数中我们处理所有的输入变量,并将结果输出到输出变量中。

??虽然着色器是各自独立的小程序,但是它们都是一个整体的一部分,出于这样的原因,我们希望每个着色器都有输入和输出,这样才能进行数据交流和传递。

??GLSL定义了in和out关键字专门来实现这个目的。每个着色器使用这两个关键字设定输入和输出,只要一个输出变量与下一个着色器阶段的输入匹配,它就会传递下去。但在顶点和片段着色器中会有点不同。

??如果我们打算从一个着色器向另一个着色器发送数据,我们必须在发送方着色器中声明一个输出,在接收方着色器中声明一个类似的输入。当类型和名字都一样的时候,OpenGL就会把两个变量链接到一起,它们之间就能发送数据了(这是在链接程序对象时完成的)。

??Uniform是一种从CPU中的应用向GPU中的着色器发送数据的方式,但uniform和顶点属性有些不同。首先,uniform是全局的(Global)。全局意味着uniform变量必须在每个着色器程序对象中都是独一无二的,而且它可以被着色器程序的任意着色器在任意阶段访问。第二,无论你把uniform值设置成什么,uniform会一直保存它们的数据,直到它们被重置或更新。

1、顶点坐标的 Y 值 乘以 -1,即 使三角形反转。(图形向量转换)

2、 渲染阶段,在程序中设定offset 值,传送给着色器。

3、glGetUniformLocation方法:获取着色器程序中,指定为uniform类型变量的id。

4、glUniform1f(GLint location, GLfloat v0); location指明要更改的uniform变量的位置;v0指明在指定的uniform变量中要使用的新值。

5、offset = 0.5

glUniform1f(glGetUniformLocation(self.program, "xOffset"), offset);将0.5的值赋给GLSL程序中的xOffset变量。

用Python编写,print("X"),列出1个三角形,第1行1个X居中,第2行2个X居中,第3行5个X居中,列出10行来。

1、创建python文件,testtriangle.py;

2、编写python代码,打印三角形;

for?i?in?range(1,?11):

print('?'.join('X'?for?j?in?range(i)).center(19,?'?'))

3、窗口右击,选择‘在终端中运行Python文件’;

4、在输出窗口中,可以发现三角形已输出;

python画三角形

n=int(input('请输入一个大于零的整数n='))

for?i?in?range(n):

????for?j?in?range(2*i+1):

????????print("*",end="")

????????

????for?k?in?range(0,i):

????????print("?",?end="?")????

????print("\n")

在python 3.5上运行满足题意。

(责任编辑:IT教学网)

更多