python编程画三角形(python绘制三角形的程序)
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上运行满足题意。