二、OpenGL绘制正方形并使其移动
2020-07-05 本文已影响0人
随意昵称你能懂得
1、定义正方形
定义顶点到中心的距离
GLfloat blockSize = 0.1f;
顶点数组
GLfloat vVerts[] = {
-blockSize, -blockSize, 0.0f,
blockSize, -blockSize, 0.0f,
blockSize, blockSize, 0.0f,
-blockSize, blockSize, 0.0f,
};
基本图源为长方形
triangleBatch.Begin(GL_TRIANGLE_FAN, 4);
基本图元示例
基本图元示例1、键位控制效果
基本流程:
- 确定步长
GLfloat stepSize = 0.025f;
- 计算相对移动坐标
if (key == GLUT_KEY_UP) {
yPos += stepSize;
}
if (key == GLUT_KEY_DOWN) {
yPos -= stepSize;
}
if (key == GLUT_KEY_LEFT) {
xPos -= stepSize;
}
if (key == GLUT_KEY_RIGHT) {
xPos += stepSize;
}
- 计算是否越界
if (xPos < (-1.0f + blockSize)) {
xPos = -1.0f + blockSize;
}
if (xPos > (1.0f - blockSize)) {
xPos = 1.0f - blockSize;
}
if (yPos < (-1.0f + blockSize)) {
yPos = -1.0f + blockSize;
}
if (yPos > (1.0f - blockSize)) {
yPos = 1.0f - blockSize;
}
- 重新渲染
void RenderScene(void) {
//1.清除一个或者一组特定的缓存区
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
//2.设置颜色RGBA
GLfloat vRed[] = {1.0f, 0.5f, 0.0f, 1.0f};
//3.定义矩阵
M3DMatrix44f mTransformMatrix;
//4.平移矩阵
m3dTranslationMatrix44(mTransformMatrix, xPos, yPos, 0.0f);
//5.当单元着色器不够用时,使用平面着色器
//参数1:存储着色器类型
//参数2:使用什么矩阵变换
//参数3:颜色
shaderManager.UseStockShader(GLT_SHADER_FLAT, mTransformMatrix, vRed);
//6.提交着色器
triangleBatch.Draw();
glutSwapBuffers();
}