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

2024-04-14 03:58

本文主要是介绍glut基本程序+旋转的四边形,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#include "stdafx.h"
#include <GL/glut.h>

#include <iostream>

#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"<<endl;
            break;
        case GLUT_RIGHT_BUTTON:
            cout<<"GLUT_RIGHT_BUTTON"<<endl;
            break;
        case GLUT_MIDDLE_BUTTON:
            cout<<"GLUT_MIDDLE_BUTTON"<<endl;
            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;
}

 

这篇关于glut基本程序+旋转的四边形的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/902013

相关文章

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

Qt QWidget实现图片旋转动画

《QtQWidget实现图片旋转动画》这篇文章主要为大家详细介绍了如何使用了Qt和QWidget实现图片旋转动画效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、效果展示二、源码分享本例程通过QGraphicsView实现svg格式图片旋转。.hpjavascript

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

poj 2187 凸包or旋转qia壳法

题意: 给n(50000)个点,求这些点与点之间距离最大的距离。 解析: 先求凸包然后暴力。 或者旋转卡壳大法。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <s

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk