• 大小: 3KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: 其他
  • 标签: opengl交互  

资源简介

我是一个初学者,可能有的地方考虑不周到,但是我觉得还是可以放出来大家一起交流交流,在键盘控制的时候,方向键不能和+ - 响应,所以我用的glut的函数来写的~不知道是不能响应还是怎么~初学者还需要学习~

资源截图

代码片段和文件信息

#include 
#include
#include


static GLfloat x = 0.0f;
static GLfloat z = 0.0f;
static GLfloat y = 0.0f;
static GLfloat tx = 1.0f;
static GLfloat ty = 1.0f;
static GLfloat tz = 1.0f;
static GLfloat  oldmy oldmx;
static GLfloat deltax deltay;

void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(deltax 0.0 1.0 0.0);
glRotatef(deltay 1.0 0.0 0.0);
glTranslatef(x y z);
glScalef(tx ty tz);

glBegin(GL_TRIANGLES);
// 第1个三角形 前面
glColor3f(1.0f 0.0f 0.0f);
glVertex3f(0.0f 1.0f 0.0f);
glColor3f(0.0f 1.0f 0.0f);
glVertex3f(-1.0f -1.0f 1.0f);
glColor3f(0.0f 0.0f 1.0f);
glVertex3f(1.0f -1.0f 1.0f);

// 第2个三角形 左面
glColor3f(1.0f 0.0f 0.0f);
glVertex3f(0.0f 1.0f 0.0f);
glColor3f(0.0f 1.0f 0.0f);
glVertex3f(-1.0f -1.0f -1.0f);
glColor3f(0.0f 0.0f 1.0f);
glVertex3f(-1.0f -1.0f 1.0f);

// 第3个三角形 右边    
glColor3f(1.0f 0.0f 0.0f);
glVertex3f(0.0f 1.0f 0.0f);
glColor3f(0.0f 1.0f 0.0f);
glVertex3f(1.0f -1.0f 1.0f);
glColor3f(0.0f 0.0f 1.0f);
glVertex3f(1.0f -1.0f -1.0f);

// 第4个三角形 后边    
glColor3f(1.0f 0.0f 0.0f);
glVertex3f(0.0f 1.0f 0.0f);
glColor3f(0.0f 1.0f 0.0f);
glVertex3f(1.0f -1.0f -1.0f);
glColor3f(0.0f 0.0f 1.0f);
glVertex3f(-1.0f -1.0f -1.0f);
glEnd();

glBegin(GL_QUADS);//底面
glColor3f(0.5f 0.5f 0.5f);
glVertex3f(1.0f -1.0f 1.0f);
glColor3f(0.5f 0.5f 0.5f);
glVertex3f(1.0f -1.0f -1.0f);
glColor3f(0.5f 0.5f 0.5f);
glVertex3f(-1.0f -1.0f -1.0f);
glColor3f(0.5f 0.5f 0.5f);
glVertex3f(-1.0f -1.0f 1.0f);
glEnd();

glPopMatrix();
glutSwapBuffers();
}
void Mouse(int button int state int x int y) //处理鼠标点击  
{
if (state == GLUT_DOWN) //第一次鼠标按下时记录鼠标在窗口中的初始坐标  
oldmx = x oldmy = y;
}
void onmousemove(int x int y) //处理鼠标拖动  
{
deltax += 360 * (x - oldmx) / 600;
deltay += 360 * (y - oldmy) / 600;
oldmx = x;
oldmy = y;
}


void SpecialKeys(int key int rx int ry)
{
if (key == GLUT_KEY_UP)
y += 0.1f;

if (key == GLUT_KEY_DOWN)
y -= 0.1f;

if (key == GLUT_KEY_LEFT)
x -= 0.1f;

if (key == GLUT_KEY_RIGHT)
x += 0.1f;
glutPostRedisplay();

}

void keyboard(unsigned char key int m_x int m_y)
{
switch (key) {
case ‘+‘:
tx = tx * 1.1;
ty = ty * 1.1;
tz = tz * 1.1;
glutPostRedisplay();
break;
case ‘-‘:
tx = tx / 1.1;
ty = ty / 1.1;
tz = tz / 1.1;
glutPostRedisplay();
break;
}
}
void init()
{
glEnable(GL_DEPTH_TEST);
}
void reshape(int w int h)
{
glViewport(0 0 w h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-2 2 -2 2 -10 10);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc char *argv[])
{
glutInit(&argc argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowPosition(300 100);
glutInitWindowSize(600 600);
glutCreateWindow(“

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        3397  2020-06-10 19:27  opengl鼠标旋转,键盘缩放和平移.cpp

评论

共有 条评论

相关资源