美文网首页
OpenGL键位控制方块移动

OpenGL键位控制方块移动

作者: 郝程序猿 | 来源:发表于2020-07-05 18:54 被阅读0次

使用到的类库

1.GLShaderManager

2.GLTools

3.GLUT

一.针对方块的控制,我们首先可以先绘制一个正方形

 GLfloat blockSize = 0.1f;

 GLfloat vVerts[] = {        

    -blockSize,-blockSize,0.0f,       

    blockSize,-blockSize,0.0f,       

    blockSize,blockSize,0.0f,       

    -blockSize,blockSize,0.0f,

};

正方形坐标示意图

对于绘制一个正方形来说,需要我们在设置图元方式的时候设置为GL_TRIANGLE_FAN

triangleBatch.Begin(GL_TRIANGLE_FAN, 4);

当然,还有很多的图元连接方式 :

对应的图元连接方式

二.在main函数中注册相应的回调函数

int main(int argc,char *argv[]) {        

    gltSetWorkingDirectory(argv[0]);                 

    glutInit(&argc, argv);               

    glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL);      

    glutInitWindowSize(500, 500);      

    glutCreateWindow("Triangle");             

    glutReshapeFunc(changeSize);         

    glutDisplayFunc(RenderScene);         

    glutSpecialFunc(SpecialKeys);                       

    GLenum status = glewInit();       

     if (GLEW_OK != status) {                         

        printf("GLEW Error:%s\n",glewGetErrorString(status));                

        return 1;                

     }                  

    setupRC();             

    glutMainLoop();                  

    return  0;   

}

main函数中:

gltSetWorkingDirectory(argv[0]) 设置当前工作目录

glutInit(&argc, argv);初始化GLUT库

glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL);:初始化双缓冲窗口

 glutInitWindowSize(500, 500); GLUT窗口大小设置

glutCreateWindow("Triangle");窗口设置标题为Triangle

glutReshapeFunc(changeSize); 注册窗口大小更改时候的函数回调

 glutDisplayFunc(RenderScene);注册显示函数回调

glutSpecialFunc(SpecialKeys);注册特殊键位函数回调

setupRC();//设置渲染环境

其中,我们设置的所有回调函数都可以自己定义名称,这里我定义的分别为changeSize、RenderScene、SpecialKeys

其它函数我们不再赘述,主要说下自己注册的这几个回调

changeSize:顾名思义,就是窗口大小更改的时候会自动回调这个函数,在此函数中,需要设置视口大小

glViewport(0,0, w, h);

RenderScene :显示的时候调用该函数,需要在此函数中清除特定的缓存区

RenderScene流程图

SpecialKeys:接收到键值回调函数,

这里有两种计算形式:1.根据顶点进行计算 2. 根据矩阵方式进行计算

但是这两种方式的核心为下图:

 以矩阵为例:设定xPos 与yPos stepSize 后即可进行方块移动的操作

GLfloat xPos = 0.0f;

GLfloat yPos = 0.0f;

voidSpecialKeys(intkey,intx,inty){

     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;

    }

    glutPostRedisplay();

}

相关文章

  • OpenGL键位控制方块移动

    使用到的类库 1.GLShaderManager 2.GLTools 3.GLUT 一.针对方块的控制,我们首先可...

  • C++俄罗斯方块(源码)值得收藏学习

    VC++俄罗斯方块源码带声音,操作说明:利用键盘控制方块的移动: ↑ 方块旋转 ↓ 直接落下 ←向左移动 → 向右...

  • OpenGL 绘制键盘可控制的正方形

    在绘制正方形图形跟绘制三角形图形基本上是一样的流程,要用键盘控制图形移动,还是要了解 OpenGL 下键位是如何控...

  • OpenGL -正方形键位控制

    用到的函数及功能说明 main函数(int main(int argc, char * argv[])):程序入口...

  • OpenGL 正方形键位控制

    1.先看一下效果 2.流程图 3.开始绘制 1.OpenGL环境搭建:OpenGL环境搭建2.准备工具类 着色管理...

  • 三、OpenGL案例-正方形的移动

    案例:用OpenGL实现 通过上下左右键移动屏幕中的小方块1.OpenGL 环境配置2.执行流程 2.1 3.案例...

  • OpenGL 正方形绘制&键位控制

    前言 今天使用OpenGL的固定存储着色器渲染正方形,并能通过键盘移动。效果如下: 正方形绘制流程 代码实现:

  • OpenGL_正方形键位控制

    正方形键盘控制流程 实现部分 RenderScene函数 具体实现代码如下 正方形绘制 定义正方形的边长和4个顶点...

  • OpenGL案例:正方形键位控制

    绘制正方形 以正方形中心为原点定义顶点D到Y轴的距离为blockSize,即顶点D的二维坐标为(-blockSiz...

  • 2048中文纯净版

    游戏规则很简单,控制数字方块上下左右移动(所有的数字方块都会跟随移动),数字相同的两个方块碰撞,会合并为一个新的数...

网友评论

      本文标题:OpenGL键位控制方块移动

      本文链接:https://www.haomeiwen.com/subject/ugwvqktx.html