`
daojin
  • 浏览: 691567 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

自己动手实现OpenGL之glViewPort(一)

 
阅读更多

直接上代码。

	public static   void glViewport(
            int x,
            int y,
            int width,
            int height
     ) 
	{
		int surfaceHeight = mInfo.height;
		float far = mViewPortZFar;
		float near = mViewPortZNear;
		float sx = width/2.0f;
		float ox = sx + x;
		float sy = height/2.0f;
		float oy = sy + surfaceHeight - height - y;   
		float A = (far - near)/2.0f;
		float B = (far + near)/2.0f;
		// compute viewport matrix
		float[][] f = new float[4][4];
	    f[0][0] = sx;  f[0][1] = 0;   f[0][2] = 0;  f[0][3] = ox;
		f[1][0] = 0;   f[1][1] =-sy;  f[1][2] = 0;  f[1][3] = oy;
		f[2][0] = 0;   f[2][1] = 0;   f[2][2] = A;  f[2][3] = B;
		f[3][0] = 0;   f[3][1] = 0;   f[3][2] = 0;  f[3][3] = 1;
		mCurrentViewPortMatrix = new M4();
		mCurrentViewPortMatrix.m = f;
	}

 

 

  

 public static void glDepthRangef(
        float zNear,
        float zFar
    ){
     mViewPortZNear = zNear;
     mViewPortZFar = zFar;
    }

 
   

分享到:
评论

相关推荐

    Qt+opengl实现分屏效果

    Qt+opengl实现分屏效果Qt+opengl实现分屏效果Qt+opengl实现分屏效果Qt+opengl实现分屏效果Qt+opengl实现分屏效果Qt+opengl实现分屏效果Qt+opengl实现分屏效果Qt+opengl实现分屏效果Qt+opengl实现分屏效果Qt+opengl...

    qt实现opengl简单例子

    在本文中,我们将深入探讨如何使用Qt框架来实现OpenGL的基本功能,特别关注如何在Qt环境中创建一个OpenGLWidget,展示一个简单的OpenGL渲染实例。Qt是一个强大的跨平台应用开发框架,而OpenGL则是一种广泛应用的图形...

    利用OpenGL 实现图形的局部放大

    为了解决这一问题,本文介绍了一种利用OpenGL在Visual C++环境中实现图形局部放大的方法——“框选”放大功能。 #### 3. 框选功能描述 “框选”是一种常见的图形操作方式,允许用户通过鼠标拖动创建一个矩形区域,...

    VS2005中实现OpenGL三维绘图_旋转

    在Visual Studio 2005 (VS2005) 中实现OpenGL三维绘图并实现旋转功能是一项常见的图形编程任务,特别是在游戏开发、科学可视化和3D建模等领域。OpenGL是一个跨语言、跨平台的图形库,用于渲染高质量的2D和3D图形。在...

    opengl编程实现旋转

    OpenGL编程实现旋转是一个在计算机图形学领域常见的任务,它涉及到3D对象的动态展示,是游戏开发、模拟软件和可视化应用的重要组成部分。OpenGL是一个跨语言、跨平台的编程接口,用于渲染2D、3D矢量图形。在这个场景...

    用C++实现OPENGL缩放

    C++作为一种通用编程语言,是实现OpenGL功能的常见选择。本篇文章将详细探讨如何使用C++和OpenGL来实现图形的缩放和平移功能。 首先,要使用OpenGL进行图形操作,我们需要包含必要的头文件并链接相应的库。在C++中...

    在VC中实现OpenGL三维绘图_Vc_

    4. **绘图函数**:在OpenGL中,绘图是通过一系列函数调用来实现的。例如,`glBegin`和`glEnd`定义一个顶点序列,`glVertex3f`定义3D空间中的一个点,`glColor3f`定义颜色,`glTranslate`和`glRotate`进行变换等。源...

    利用OpenGL实现动画效果

    在OpenGL中,动画是通过连续的帧来实现的,每帧都是一个单独的渲染过程。我们会在主程序中设置一个无限循环,不断调用`glClear()`清除屏幕,然后使用`glDrawArrays()`或`glDrawElements()`等函数绘制物体,最后调用`...

    VC++下opengl 的Bresenham画圆算法实现

    OpenGL是计算机图形学中一个强大的库,用于在各种操作系统上创建2D和3D图形。在VC++环境中,我们可以利用OpenGL库来实现图形绘制,包括画圆。Bresenham算法是一种快速、精确的离散化算法,常用于在屏幕上绘制直线...

    在VisualBasic中构造OpenGL类模块实现三维图形设计

    在众多领域中,计算机仿真技术已经成为了工程设计和软件开发人员不可或缺的工具之一。OpenGL作为一套高性能的图形处理系统,由Silicon Graphics公司开发,为图形硬件提供了强大的软件接口。OpenGL因其卓越的功能和...

    基于MFC+vs2010实现的Opengl绘图

    在"基于MFC+vs2010实现的Opengl绘图"项目中,开发者创建了一个通用的框架,使得新手能够更轻松地学习和使用OpenGL。这个框架的核心在于`DrawScene`函数,它是OpenGL渲染的主要部分。通常,`DrawScene`会包含...

    基于MFC单文档的OPENGL实现

    在本项目"基于MFC单文档的OPENGL实现"中,我们将探讨如何将OpenGL与MFC的单文档界面(SDI)结合,创建一个基本的3D图形应用程序。 首先,让我们理解MFC的单文档界面。在SDI应用中,每个窗口对应一个独立的文档,...

    OpenGL 相机类 camera_class 可以控制相机的方向和远近,实现漫游

    OpenGL是用于渲染2D、3D图形的跨语言、跨平台的应用程序编程接口(API)。在OpenGL中,相机是至关重要的组成部分,它决定了用户如何观察3D场景。...理解和熟练使用相机类是进行OpenGL编程的关键技能之一。

    opengl弹框苍蝇

    在这个“opengl弹框苍蝇”项目中,开发者使用C语言风格实现了在OpenGL环境中一个动态显示的苍蝇,它在一个弹跳的方框内移动。这个程序在Visual Studio(VS)环境下编译,展示了OpenGL的基本图形绘制和动画功能。 ...

    基于openGL实现的3D空间

    在本项目中,“基于OpenGL实现的3D空间”是指利用OpenGL库开发的一个三维图形应用程序。Visual Studio 2003(VS2003)被选为编译环境,尽管这是一个较旧的版本,但OpenGL的跨平台特性使得代码可以在其他现代编译器上...

    WIN32 opengl绘制一个点

    在计算机图形学领域,OpenGL是一种跨语言、跨平台的编程接口,用于渲染2D和3D矢量图形。在Windows环境下,使用OpenGL进行图形绘制通常需要配合Win32 API来处理窗口系统。在这个主题中,“WIN32 OpenGL绘制一个点”...

    yinghua.rar_opengl_opengl 场景_opengl实现镜像_yinghua_樱花

    在这个名为"yinghua.rar"的压缩包中,我们看到一个基于OpenGL的项目,它在VC++环境中实现了一个樱花飞舞的场景,并且加入了镜像效果来反射樱花的动态。这涉及到多个OpenGL编程的关键知识点。 首先,OpenGL是一个跨...

    基于MFC对话框的openGL示例程序

    在对话框中,OpenGL通常通过一个自定义的视图类来实现,这个类继承自COpenGLView或CWnd,并重写OnDraw函数以进行OpenGL绘图。 放大缩小功能是通过改变视口大小和投影矩阵来实现的。视口决定了屏幕上的像素区域,而...

    利用OpenGL实现多视图

    OpenGL是一种强大的图形库,用于在各种操作系统和硬件平台上创建2D和3D图形。它提供了丰富的函数集,允许程序员直接控制显卡的功能,从而实现复杂的视觉效果和高性能的图形渲染。在“利用OpenGL实现多视图”的场景下...

    opengl建模程序代码

    在Windows平台上,通常使用Win32 API来创建窗口,并将OpenGL上下文与之关联,从而为OpenGL提供一个显示表面。 1. **基本的照相机操作**:在OpenGL中,我们并不直接控制“照相机”,而是通过变换矩阵来模拟视角变化...

Global site tag (gtag.js) - Google Analytics