热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

glut基本程序+旋转的四边形

#includestdafx.h#include<GLglut.h>#include<iostream>#pragmacomment(lib

#include "stdafx.h"
#include

#include

#pragma comment( lib, "glut32.lib")

//注意:glut.h与glut32.lib版本要一样,否则会出现链接错误:无法解析的外部符号__imp____glutInitWithExit@12,该符号在函数 _glutInit_ATEXIT_HACK@8 中被引用,因为版本不同,可能函数的名称或参数列表不同,即找不到函数的定义)

using namespace std;


double g_dAngle= 0.0f;

 

void Init(void)
{
 glClearColor(0.0f,0.0f,0.0f,0.0f);
}


void Display(void)
{
 glClear(GL_COLOR_BUFFER_BIT);
 glColor3f(1.0f,0.0f,0.0f);
 

 glLoadIdentity();
 glTranslatef( 0.0f, 0.0f , -2.0f);

 glRotatef( g_dAngle, 0.0f, 0.0f, 1.0f);
 //draw a square
 glBegin( GL_QUADS);
 
  glVertex3f(  0.5f,  0.5f, 0.0f);
  glVertex3f( -0.5f,  0.5f, 0.0f);
  glVertex3f( -0.5f, -0.5f, 0.0f);
  glVertex3f(  0.5f, -0.5f, 0.0f);

 glEnd();

 //glFlush();
 glutSwapBuffers(); //双缓冲

}
void Reshape(int w,int h)

 glViewport(0,0  ,(GLsizei)w  ,(GLsizei)h  );
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 
 gluPerspective( 90.0f, (GLfloat)w/ (GLfloat)h, 0.1f, 1000.0f );

 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
}

void OnTimer( int iTimerIndex)
{
 //更新角度
 g_dAngle += 2.0f;
 if ( g_dAngle > 360.0f)
 {
  g_dAngle -= 360.0f;
 }

 glutPostRedisplay();//刷新显示
    glutTimerFunc( 50, OnTimer, 0);

}
 

void Keyboard(unsigned char key, int x, int y)
{

    switch (key)
    {
        case 'w':     //前
        break;
        case 's':     //后
            break;
        case 'a':     //左
            break;
        case 'd':     //右
            break;
        case 'q':    //上
            break;
        case 27:
            exit(0);
            break;
    }
}

void MouseEvent(int button, int state, int x, int y)
{
    switch(button)
    {
        case GLUT_LEFT_BUTTON:
            cout<<"GLUT_LEFT_BUTTON"<             break;
        case GLUT_RIGHT_BUTTON:
            cout<<"GLUT_RIGHT_BUTTON"<             break;
        case GLUT_MIDDLE_BUTTON:
            cout<<"GLUT_MIDDLE_BUTTON"<             break;
    }
}
void MotionMove(int x,int y)
{

}
 
int main(int argc, char** argv)
{
 glutInit(&argc,argv);
 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
 glutInitWindowSize(450,450);
 glutInitWindowPosition(200,200);
 glutCreateWindow("Hello");
 Init();
 glutDisplayFunc( Display);
 glutReshapeFunc( Reshape);

 //定时器
 glutTimerFunc( 50, OnTimer, 0 );

 glutKeyboardFunc( Keyboard);
    glutMouseFunc( MouseEvent);
    glutMotionFunc( MotionMove);

 glutMainLoop();
 return 0;
}

 


推荐阅读
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 本教程涵盖OpenGL基础操作及直线光栅化技术,包括点的绘制、简单图形绘制、直线绘制以及DDA和中点画线算法。通过逐步实践,帮助读者掌握OpenGL的基本使用方法。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 本题探讨了在一个有向图中,如何根据特定规则将城市划分为若干个区域,使得每个区域内的城市之间能够相互到达,并且划分的区域数量最少。题目提供了时间限制和内存限制,要求在给定的城市和道路信息下,计算出最少需要划分的区域数量。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • Codeforces Round #566 (Div. 2) A~F个人题解
    Dashboard-CodeforcesRound#566(Div.2)-CodeforcesA.FillingShapes题意:给你一个的表格,你 ... [详细]
  • 使用GDI的一些AIP函数我们可以轻易的绘制出简 ... [详细]
  • dotnet 通过 Elmish.WPF 使用 F# 编写 WPF 应用
    本文来安利大家一个有趣而且强大的库,通过F#和C#混合编程编写WPF应用,可以在WPF中使用到F#强大的数据处理能力在GitHub上完全开源Elmis ... [详细]
  • 本文探讨了在Java中实现系统托盘最小化的两种方法:使用SWT库和JDK6自带的功能。通过这两种方式,开发者可以创建跨平台的应用程序,使窗口能够最小化到系统托盘,并提供丰富的交互功能。 ... [详细]
  • 本文介绍如何使用布局文件在Android应用中排列多行TextView和Button,使其占据屏幕的特定比例,并提供示例代码以帮助理解和实现。 ... [详细]
  • 在 Flutter 开发过程中,开发者经常会遇到 Widget 构造函数中的可选参数 Key。对于初学者来说,理解 Key 的作用和使用场景可能是一个挑战。本文将详细探讨 Key 的概念及其应用场景,并通过实例帮助你更好地掌握这一重要工具。 ... [详细]
  • 本文介绍了Android开发中Intent的基本概念及其在不同Activity之间的数据传递方式,详细展示了如何通过Intent实现Activity间的跳转和数据传输。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
  • 本文将深入探讨如何在不依赖第三方库的情况下,使用 React 处理表单输入和验证。我们将介绍一种高效且灵活的方法,涵盖表单提交、输入验证及错误处理等关键功能。 ... [详细]
author-avatar
传导网络
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有