一、目的
1、现在我们想在屏幕上显示4个立方体。每个立方体看起来都是一样的,区别在于它们在世界的位置不同。
二、程序运行结果
三、GLSL
修改GLSL程序,对顶点进行旋转、平移、缩放操作。
修改rot1、rot2、rot3的乘的次序,会有不同的效果。
四、源代码
"""
glfw_cube03.py
Author: dalong10
Description: Draw 4 Cube, learning OPENGL
"""
import glutils #Common OpenGL utilities,see glutils.py
import sys, random, math
import OpenGL
from OpenGL.GL import *
from OpenGL.GL.shaders import *
import numpy
import numpy as np
import glfw
strVS = """
#version 330 core
layout(location = 0) in vec3 position;
layout (location = 1) in vec2 inTexcoord;
out vec2 outTexcoord;
uniform float a;
uniform float b;
uniform float c;
uniform float scale;
uniform float theta;
void main(){
mat4 rot1=mat4(vec4(1.0, 0.0,0.0,0),
vec4(0.0, 1.0,0.0,0),
vec4(0.0,0.0,1.0,0.0),
vec4(a,b,c,1.0));
mat4 rot2=mat4(vec4(scale, 0.0,0.0,0.0),
vec4(0.0, scale,0.0,0.0),
vec4(0.0,0.0,scale,0.0),
vec4(0.0,0.0,0.0,1.0));
mat4 rot3=mat4( vec4(0.5+0.5*cos(theta), 0.5-0.5*cos(theta), -0.707106781*sin(theta), 0),
vec4(0.5-0.5