opengl 矩阵变换

#include <windows.h>
#include <GL/gl.h>
#include <GL/glaux.h>

GLfloat  step=0.0,s=0.1;

void CALLBACK  display();
void CALLBACK display()
{

   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();

   s+=0.005;
   if(s>1.0)s=0.1;

   glPushMatrix();

   glScalef(s,s,s);

   //glRotatef(step,0.0,1.0,0.0); //沿y轴旋转
   glRotatef(step,0.0,0.0,-1.0);//沿z轴旋转(绕Z轴旋转时,大于0,表示逆时针旋转。小于0顺时针旋转)
   //glRotatef(step,1.0,0.0,0.0);
   //对物体进行数学描写叙述
   glBegin(GL_POLYGON);

		glColor3f(0.0,1.0,1.0);
		glVertex2f(-0.4,-0.4);

		glColor3f(1.0,0.0,0.0);
		glVertex2f(0.0,0.0);

		glColor3f(1.0,0.0,1.0);
		glVertex2f(-0.4,0.4);

   glEnd();

    glBegin(GL_LINES);

		glColor3f(0.0,1.0,1.0);
		glVertex2f(0.0,-0.2);

		glColor3f(1.0,0.0,1.0);
		glVertex2f(0.0,0.2);

   glEnd();

    glBegin(GL_POLYGON);

		glColor3f(0.0,1.0,1.0);
		glVertex2f(0.4,-0.4);

		glColor3f(1.0,0.0,0.0);
		glVertex2f(0.0,0.0);

		glColor3f(1.0,0.0,1.0);
		glVertex2f(0.4,0.4);

   glEnd();

   glPopMatrix();

   glFlush();
   auxSwapBuffers();
}

void CALLBACK stepDisplay (void)
{
	step = step + 0.13;
	if (step >360.0)
		step = step -360.0;
	display();
}

void main()
{
	//初始化窗体(设置窗体的名称坐标尺寸和显示模式)
   auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
   auxInitPosition(0,0,600,600);
   auxInitWindow("openG");
   glClearColor(0.0,0.0,0.0,0.0);
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

   auxIdleFunc (stepDisplay);

   auxMainLoop(display);

}

时间: 2025-01-19 19:19:41

opengl 矩阵变换的相关文章

[转载]OpenGL矩阵变换 一篇很好的译文

转自  http://blog.csdn.net/lyx2007825/article/details/8792475,太精华了收藏下  英文版本:http://www.songho.ca/opengl/gl_transform.html Overview 几何数据——顶点位置,和标准向量(normal vectors),在OpenGL 管道raterization 处理过程之前可通过顶点操作(Vertex Operation)和基本组合操作改变这些数据. Object Coordinates

WebGL简易教程(五):图形变换(模型、视图、投影变换)

目录 1. 概述 2. 详论 1) 模型变换 (1) 平移变换 (2) 缩放变换 (3) 旋转变换 (4) 组合变换 2) 视图变换 (1) 原理 (2) 推导 3) 投影变换 (1) 透视投影 (2) 正射投影 3. 综合运用 4. 参考 1. 概述 通过之前的教程,对WebGL中可编程渲染管线的流程有了一定的认识.但是只有前面的知识还不足以绘制真正的三维场景,可以发现之前我们绘制的点.三角形的坐标都是[-1,1]之间,Z值的坐标都是采用的默认0值,而一般的三维场景都是很复杂的三维坐标.为了在

Android OpenGL ES(十三)通用的矩阵变换指令 .

Android OpenGL ES 对于不同坐标系下坐标变换,大都使用矩阵运算的方法来定义和实现的.这里介绍对应指定的坐标系(比如viewmodel, projection或是viewport) Android OpenGL ES支持的一些矩阵运算及操作. OpenGL ES 中使用四个分量(x,y,z,w)来定义空间一个点,使用4个分量来描述3D坐标称为齐次坐标 :所谓齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示. 它有什么优点呢? 许多图形应用涉及到几何变换,主要包括平移.旋转

OpenGL第十三节:矩阵变换

LTexture.cpp void LTexture::render( GLfloat x, GLfloat y, LFRect* clip ){ if( mTextureID != 0 ) { GLfloat texTop = 0.f; GLfloat texBottom = (GLfloat)mImageHeight / (GLfloat)mTextureHeight; GLfloat texLeft = 0.f; GLfloat texRight = (GLfloat)mImageWidt

Android OpenGL ES零基础系列(一):理解GLSurfaceView,GLSurfaceView.Render的基本用法

转载请注明出处 前言 OpenGL ES是OpenGL的一个子集,是针对手机.PDA和游戏主机等嵌入式设备而设计的.该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准. 因此OpenGL ES作为第三方库被应用在android中. 到目前为止,OpenGL ES已经发展有了3个版本,OpenGL ES 1.0 , OpenGL ES 2.0 , OpenGL ES 3.0.其中OpenGL ES 1.0 是以OpenGL 1.3

OpenGL glMultMatrixf() glPushMatrix() glPushMatrix()浅析

我在之前的博客中曾提到过,OpenGL中坐标是采用行向量表示的,与之相对应的是,在矩阵变换中使用的是变换矩阵的转置,并且使用的是后乘的方式.本文直接使用下面的代码来及其后的图示来解释函数 p,li { white-space: pre-wrap } void glMultMatrixf( const GLfloat *m ) p,li { white-space: pre-wrap } void glPushMatrix( void ) p,li { white-space: pre-wrap

第三章:初始化 OpenGL 4.0

原文地址: http://www.rastertek.com/gl40tut03.html Tutorial 3: Initializing OpenGL 4.0 This tutorial will be the first real introduction to working with OpenGL 4.0. We will address three main things which are initializing OpenGL 4.0, shutting it down, and

OPENGL初学

一.部分常用的实体绘制函数部分常用的实体绘制函数: //以下所有函数中,radius表示球体的半径,slices表示球体纵向分割的数目(经线),主要是设置绘制的细密度,stacks表示球体横向分割的数目(纬线),创建了绘制中心在模型坐标原点,半径为radius的球体 void glutWireSphere(GLdouble radius, GLint slices, GLint stacks); //网状球 void glutSolidSphere(GLdouble radius, GLint

OpenGL几何变换---翻译http://www.songho.ca/opengl/gl_projectionmatrix.html

Overview 几何数据——顶点位置,和法向量(normal vectors),在OpenGL 管道raterization 处理过程之前可通过顶点运算(Vertex Operation)和基本组合运算改变这些数据. Object Coordinates 对象的本地坐标系——任何变换之前的最初位置.为了变换(transformation)这些对象,可以调用glRotate(),glTranslatef(),glScalef()这些方法. Eye Coordinates 使用GL_MODELVI