perspective.vert
#version 330
layout(location =0) in vec4 vertexPosition;
layout(location =1) in vec4 vertexColor;
smooth out vec4 theColor;
uniform vec2 offset;
uniform mat4 perspectiveMatrix;
void main()
{
vec4 cameraPosition =vertexPosition +vec4(offset.x, offset.y, 0.0, 0.0);
gl_Position =perspectiveMatrix *cameraPosition;
theColor =vertexColor;
}
perspective.frag
#version 330
smooth in vec4 theColor;
out vec4 outputColor;
void main()
{
outputColor =theColor;
}
perspective.c
////////////////////////////////////////////////////////////////////
///透视版本二:矩阵实现。
//调用库vmath
//作者:青丝成霜
/////////////////////////////////////////////////////
#include
#include
#include
#include "readtext.h" #include "vmath.h" #ifdef _APPLE_ #include
#else #define FREEGLUT_STATIC #include
#endif #pragma comment(lib, "readtext.lib") #pragma comment(lib, "vmath.lib") int i; GLuint vShader, fShader, programHandle; GLint vaoHandle, vboHandles[2], positionBufferHandle, colorBufferHandle; Matrix44f M; //投影矩阵 GLint offsetUniformLocation; GLint perspectiveMatrixUniformLocation; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// int infoLogLength =0; int charWritten =0; char *infoLog; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// float positionData[] ={ 0.25f, 0.25f, -1.25f, 1.0f, 0.25f, -0.25f, -1.25f, 1.0f, -0.25f, 0.25f, -1.25f, 1.0f, 0.25f, -0.25f, -1.25f, 1.0f, -0.25f, -0.25f, -1.25f, 1.0f, -0.25f, 0.25f, -1.25f, 1.0f, 0.25f, 0.25f, -2.75f, 1.0f, -0.25f, 0.25f, -2.75f, 1.0f, 0.25f, -0.25f, -2.75f, 1.0f, 0.25f, -0.25f, -2.75f, 1.0f, -0.25f, 0.25f, -2.75f, 1.0f, -0.25f, -0.25f, -2.75f, 1.0f, -0.25f, 0.25f, -1.25f, 1.0f, -0.25f, -0.25f, -1.25f, 1.0f, -0.25f, -0.25f, -2.75f, 1.0f, -0.25f, 0.25f, -1.25f, 1.0f, -0.25f, -0.25f, -2.75f, 1.0f, -0.25f, 0.25f, -2.75f, 1.0f, 0.25f, 0.25f, -1.25f, 1.0f, 0.25f, -0.25f, -2.75f, 1.0f, 0.25f, -0.25f, -1.25f, 1.0f, 0.25f, 0.25f, -1.25f, 1.0f, 0.25f, 0.25f, -2.75f, 1.0f, 0.25f, -0.25f, -2.75f, 1.0f, 0.25f, 0.25f, -2.75f, 1.0f, 0.25f, 0.25f, -1.25f, 1.0f, -0.25f, 0.25f, -1.25f, 1.0f, 0.25f, 0.25f, -2.75f, 1.0f, -0.25f, 0.25f, -1.25f, 1.0f, -0.25f, 0.25f, -2.75f, 1.0f, 0.25f, -0.25f, -2.75f, 1.0f, -0.25f, -0.25f, -1.25f, 1.0f, 0.25f, -0.25f, -1.25f, 1.0f, 0.25f, -0.25f, -2.75f, 1.0f, -0.25f, -0.25f, -2.75f, 1.0f, -0.25f, -0.25f, -1.25f, 1.0f}; float colorData[] ={ 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.8f, 0.8f, 0.8f, 1.0f, 0.8f, 0.8f, 0.8f, 1.0f, 0.8f, 0.8f, 0.8f, 1.0f, 0.8f, 0.8f, 0.8f, 1.0f, 0.8f, 0.8f, 0.8f, 1.0f, 0.8f, 0.8f, 0.8f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.5f, 0.5f, 0.0f, 1.0f, 0.5f, 0.5f, 0.0f, 1.0f, 0.5f, 0.5f, 0.0f, 1.0f, 0.5f, 0.5f, 0.0f, 1.0f, 0.5f, 0.5f, 0.0f, 1.0f, 0.5f, 0.5f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f