首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

是否可以保存当前视口,然后在下一个绘制周期中重新绘制OpenGL和C++中保存的视口?

当前视口是指在OpenGL和C++中,当前绘制的视角和尺寸。在游戏开发中,视口是非常重要的,因为它决定了玩家看到的画面内容。

要保存当前视口,可以使用glGetIntegerv函数获取当前视口的参数,并将其存储在变量中。例如:

代码语言:txt
复制
GLint viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport);

这将获取当前视口的参数,并将其存储在viewport数组中。

在下一个绘制周期中,可以使用glViewport函数将视口设置为之前保存的值。例如:

代码语言:txt
复制
glViewport(viewport[0], viewport[1], viewport[2], viewport[3]);

这将设置当前视口为之前保存的值,并允许在下一个绘制周期中重新绘制OpenGL和C++中保存的视口。

总之,要保存当前视口并在下一个绘制周期中重新绘制OpenGL和C++中保存的视口,可以使用glGetIntegerv函数获取当前视口的参数,并将其存储在变量中。然后,在下一个绘制周期中,可以使用glViewport函数将视口设置为之前保存的值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

实验5 OpenGL模型视图变换

(投影变换) 4、我们可能希望把整个看到图形画下来,但它只占据纸张一部分,而不是全部(指定在显示器窗口那个位置显示)。(变换) 这些,都可以OpenGL实现。...当我们需要保存时,调用glPushMatrix()函数,它相当于把当前矩阵压入堆栈。当需要恢复最近一次保存时,调用glPopMatrix()函数,它相当于从堆栈栈顶弹出一个矩阵为当前矩阵。...在代码,视图变换必须出现在模型变换之前,但可以在绘图之前任何时候执行投影变换变换。...除了考虑视野之外,投影变换确定物体如何投影到屏幕上,OpenGL提供了两种基本类型投影,1、透视投影:远大近小;2、正投影:不影响相对大小,一般用于建筑CAD应用程序 (4)变换 变换指定一个图象在屏幕上所占区域...记住,可以在glutWireSphere()函数中使用适当参数,在绘制两个球体时指定球体大小。 为了绘制这个太阳系,首先需要设置一个投影变换一个视图变换。

1.6K30

OpenGL ES——一个平平无奇三角形

, Toast.LENGTH_SHORT).show(); } } 我们可以看到,OpenGL实际渲染逻辑,全部封装在了我自己创建GLRender2。...设置背景色 // 设置白色为清屏 gl.glClearColor(1, 1, 1, 1); 设置场景大小 // 设置OpenGL场景大小,(0,0)表示窗口内部左下角,(w,h)指定了大小...虽然在OpenGL,我们画是3D物体,但手机屏幕毕竟是一个平面。我们在生活,看见也只是一个平面。那么,一个3D物体,我们看到应该是什么样,取决于我们投影矩阵如何设置。...图形色彩数据 OpenGL并不是对堆里面的数据进行操作,而是在直接内存(Direct Memory),即操作数据需要保存到NIO里面的Buffer对象。...我们在onDrawFrame生命周期中进行绘制

81660
  • 小菜学Chromium之OpenGL学习之二

    在这个教程里,我们一起来玩第一个OpenGL程序.它将显示一个OpenGL窗口,可以在窗口全屏模式下切换,按ESC退出.它是我们以后应用程序框架....本节例程将创建一个OpenGL窗口,因此我们暂时还无需设置大堆变量。余下需要设置变量不多,但十分重要。几乎所写一个OpenGL程序中都会用到它们。.../ 窗口活动标志,缺省为TRUE bool fullscreen=TRUE;// 全屏标志缺省,缺省设定成全屏模式 下面的代码作用是重新设置OpenGL场景大小,而不管窗口大小是否已经改变(假定您没有使用全屏模式...height){ if (height==0) // 防止被零除 { height=1;// 将Height设为1 } glViewport(0, 0, width, height);// 重置当前...我们实际上在另一个看不见"屏幕"上绘图。当我们交换缓存后,我们当前屏幕被隐藏,现在看到是刚才看不到屏幕。这也是我们看不到场景绘制过程原因。场景只是即时显示。

    1K60

    写给 python 程序员 OpenGL 教程

    OpenGL 不是一个独立平台,因此,它需要借助于一种编程语言才能被使用。C / C++ / python / java 都可以很好支持 OpengGL,我当然习惯性选择 python 语言。...在屏幕、打印机等设备上坐标是二维坐标。值得一提是,OpenGL 可以只使用设备一部分进行绘制,这个部分称为区或(viewport)。...OpenGL 中比较重要概念,现阶段可以简单理解成屏幕(或其他输出设备)。事实上,屏幕是相关但又不相同,屏幕有固定宽高比,而大小可以由用户自行定义。...OpenGL核心库实用库可以在所有的OpenGL平台上运行。...也是视景体关联概念,相对简单一点。

    3.2K30

    万字长文详解如何用Python玩转OpenGL | CSDN 博文精选

    OpenGL 不是一个独立平台,因此,它需要借助于一种编程语言才能被使用。C / C++ / Python / Java 都可以很好支持 OpengGL,我当然习惯性选择 Python 语言。...在屏幕、打印机等设备上坐标是二维坐标。值得一提是,OpenGL 可以只使用设备一部分进行绘制,这个部分称为区或(viewport)。...OpenGL 中比较重要概念,现阶段可以简单理解成屏幕(或其他输出设备)。事实上,屏幕是相关但又不相同,屏幕有固定宽高比,而大小可以由用户自行定义。...OpenGL核心库实用库可以在所有的OpenGL平台上运行。...也是视景体关联概念,相对简单一点。

    9.1K21

    OPengl、DirectX、OPenCV、OpenCL

    分为:核心模式(不支持以前版本)兼容模式(支持以前版本函数) 状态变量:   1.Opengl State Value,保存Opengl相关参数设置,如glClearColor设置清除颜色保存在...GL_COLOR_BUFFER_BIT变量可以OPengl当做状态机,通过不同状态变量开关(glEnable、glDisable只有两个状态变量)控制,实现不同显示效果。   ...内置变量:gl_Color顶点着色器或片段着色器主颜色 3.坐标系:   世界坐标(WC 屏幕原点)、物体坐标(MC 模型移动时坐标系不变,只是移动模型)、设备坐标(区或DC)、眼坐标(z...glMatrixMode(变换模式设置)   glloadindentity(移动模型坐标到原点)   glPushMatrix(获取当前栈顶矩阵压栈到新栈)   glLoadMatrix(...矩阵栈顶重赋值)   glMultiMatrix(栈顶相乘)   glGetFloatV(获取矩阵可以保存当前模型矩阵实现多个模型矩阵切换)   glDrawArrays(绘制顶点数组)   glDrawElements

    2.2K50

    OpenGL】九、OpenGL 绘制基础 ( OpenGL 状态机概念 | OpenGL 矩阵概念 )

    OpenGL一个状态机 , 其中包含了很多状态 , 简单列举下面的几项 : OpenGL 矩阵 Matrix , 包含了 投影 ( Projection ) 矩阵 , 模型 ( Model...: 绘制元素前 , 将当前颜色值设为一个值 , 如 白色 , 开始绘制后 , 就会自动使用该颜色进行绘制 ; 稍后会使用 OpenGL 在桌面窗口中绘制一个点 , 绘制前将当前颜色设置为白色 , 然后绘制颜色就是白色...; 如果想要绘制不同颜色点 , 就需要在每次绘制前 , 都修改当前颜色值 ; 整个 OpenGL 只有一个当前颜色值 ; 二、OpenGL 矩阵概念 ---- OpenGL 矩阵 Matrix...; 模型 ( ModelView ) 矩阵 作用就是将上述 世界坐标系三维坐标点 , 放到 口中 , 坐标系是摄像机下可见范围 ; 摄像机位置 : 右手坐标系 : x 指向屏幕右侧 ,...-0.5f 位置 , 这样正好暴露在摄像机下 ; 投影 ( Projection ) 矩阵 作用是将 模型 , 投影到二维屏幕 ( 显示器 ) 上 ;

    4.1K00

    视频直播与虚拟现实渲染 - OpenGL ES

    OpenGL ES上下文保存OpenGL ES状态信息,包括用于渲染数据缓存地址接收渲染结果缓存地址。 软件架构 ? 每一个iOS原生控件都有一个对应CoreAnimation层。...glViewport() 函数用来控制渲染至帧缓存子集。(设置变换大小) 视图重新调整大小时候,layoutSubviews会被调用。...纹理 一个用来保存图像颜色OpenGL ES缓存。 渲染过程取样可能会导致纹理被拉伸、压缩、翻转等。 坐标 帧缓存像素位置叫做坐标。...转换结果是所有绘制几何图形都被拉伸以适应屏幕大小。 光栅化 转换几何形状数据为帧缓存颜色像素,叫做点阵化(rasterizing),也叫光栅化。...OpenGL ES使用一个叫做视域几何图形来决定一个场景生成片元是否会显示在最终渲染结果

    1.6K80

    实验5 立方体显示与变换

    : (3) 学习OpenGL观察变换函数gluLookAt设置与使用方法,并在代码修改参数产生两点透视三点透视,将两种透视图结果存为图4-5,与对应修改代码一起保存至word实验文档(20分钟...); (4)学习OpenGL投影变换函数gluPerspectiveglOrtho设置与使用方法,启用gluPerspective函数并修改参数得到不同透视图6-7,将图代码保存;启用glOrtho...3.实验原理: 在OpenGL程序,观察变换必须出现在模型变换之前,但可以在绘图之前任何时候执行投影变换变换。...由于投影变换,变换共同决定了场景是如何映射到计算机屏幕上,而且它们都与屏幕宽度、高度密切相关,因此应该放在reshape函数。reshape函数会在窗口初次创建,移动或改变时被调用。...变换指定一个图像在屏幕上所占区域,可参考OpenGLglViewport变换函数详解。 (5)绘制场景。

    1.1K40

    OpenGL】窗口创建

    从今天开始我们开始学习OpenGL,从0开始,当然是有C++基础前提 首先包含gladGLFW头文件 #include #include ...#include 初始化 GLFW 在 main 函数,我们首先使用 glfwInit 初始化 GLFW,然后我们可以使用 glfwWindowHint 配置 GLFW,这个配置选项含义可以在...渲染窗口大小,前两个参数设置窗口左下角位置,第三个第四个参数以像素为单位设置渲染窗口宽度高度,如果尺寸设置为小于 GLFW 尺寸值;然后,所有 OpenGL 渲染都将显示在一个较小窗口中...glViewport(0, 0, 800, 600); 当用户调整窗口大小时,也应该进行相应调整,注册一个函数将 GLFWwindow 作为其第一个参数,并将两个表示新窗口尺寸整数作为其第一个参数...),并将其显示为输出到屏幕 双缓冲区 当应用程序在单个缓冲区绘制时,生成图像可能会显示闪烁问题。

    31010

    OpenGL ES 3.0 | 围绕HelloTriangle实战案例 展开 渲染流程分析

    ) 加载顶点、片段着色器 创建一个程序对象, 连接顶点、片段着色器, 并链接程序对象; 设置; 清除颜色缓冲区; 渲染简单图元 使颜色缓冲区内容在EGL窗口表面(GLSurfaceView)可见...着色器 在OpenGL ES 3.0, 除非加载有效顶点片段着色器,否则不会绘制任何几何形状; OpenGL ES 3.0程序必须至少有 一个顶点着色器 一个片段着色器; 着色器示例代码:...将用 链接到程序对象 顶点着色器、片段着色器进行; 设置清除颜色缓冲区 设置 onDrawFrame()方法用于绘制帧; GLES30.glViewport ( 0, 0, mWidth,...mHeight ); 通知OpenGL ES 用于绘制2D渲染表面的原点、宽度高度; 在OpenGL ES (Viewport) 定义所有 OpenGL ES 渲染操作 最终显示...2D矩形; 由 原点坐标(x,y)宽度、高度 定义; 清除颜色缓冲区 设置之后,需要清除屏幕; 在OpenGL ES, 绘图中涉及多种缓冲区类型:颜色、深度、模板; HelloTriangle

    1.5K10

    实验6 OpenGL模型视图变换

    (4)变换:将投影变换得到投影图映射到屏幕区上,确定最终图像在屏幕上所占区域。 上述变换在OpenGL实际上是通过矩阵乘法来实现。...无论是移动、旋转还是缩放大小,都是通过在当前矩阵基础上乘以一个矩阵来达到目的。OpenGL可以在最底层直接操作变换矩阵。...下面是这些变换函数使用时需要注意内容:   (1)在OpenGL程序,视图变换必须出现在模型变换之前,但可以在绘图之前任何时候执行投影变换变换。   ...由于投影变换,变换共同决定了场景是如何映射到计算机屏幕上,而且它们都与屏幕宽度、高度密切相关,因此应该放在reshape函数。...(480, 480);//设置窗口大小 int windowHandle = glutCreateWindow("茶壶三维显示与观察"); glutDisplayFunc(myDraw);//指定当前窗口需要重新绘制时调用函数

    2K30

    解锁前端难题:亲手实现一个图片标注工具

    可以想象为一个固定大小窗口,你通过这个窗口来观察一个更大图像。当你移动时,窗口中显示图像部分也会相应改变。...在移动时,我们需要更新图片位置,并重新绘制图像以反映新位置。...当用户通过触摸板进行滑动时,我们根据滑动方向距离更新位置,并重新绘制图像。通过这种方式,我们可以实现图像平移功能,允许用户查看图像不同部分。...我们拿到坐标,首先将其转换为 canvas 坐标,然后遍历矩形数组,判断是否有中选矩形,如果有的话将其存储下来。...首先需要一个变量来存取当前被拖拽元素,在 down up 时更新这个元素 要实现拖拽,需要一点小技巧,在点击时,计算点击点图形左上角坐标差,在每次 move 时,用当前坐标减去坐标差即可 不要忘了将坐标

    68310

    附加实验2 OpenGL变换综合练习

    3.实验原理: OpenGL通过相机模拟、可以实现计算机图形学中最基本三维变换,即几何变换、投影变换、变换等,同时,OpenGL还实现了矩阵堆栈等。...4、冲洗底片,决定二维相片大小,它相当与OpenGL变换(Viewport Transformation)(在屏幕窗口内可以定义一个矩形,称为(Viewport),视景体投影后图形就在口内显示...上述过程说明,程序绘制顶点前最后一个变换命令最先作用于顶点之上。这同时也说明,OpenGL编程,实际变换顺序与指定顺序是相反。...OpenGL相关函数是: glViewport(GLint x,GLint y,GLsizei width, GLsizei height); 这个函数定义一个。...函数参数(x, y)是在屏幕窗口坐标系左下角点坐标,参数widthheight分别是宽度高度。

    1.4K30

    OpenGL学习笔记 (一)- 综述、渲染管线

    状态机 OpenGL内部是一个状态机,绝大多数绘制配置都是一种状态。比如若你把当前颜色设置为红色,那么在你把它设置成其他颜色之前,任何绘制物体都会使用这种颜色。这样设计优点是显而易见。...变换反馈 变换反馈(transform feedback)是一个回馈过程。这一步骤,我们可以保存下经过之前处理图元数据。这样,在下一次渲染时我们就可以使用这些数据了。...变换 变换,坐标将会被转化为真实屏幕上显示坐标——也就是屏幕空间坐标(screen-space coordinates)。...光栅化 光栅化接受几何数据、像素数据,并把它们转化为片段(fragment),也就是对应屏幕像素一个方块。在这一步骤,会考虑图元绘制方式,决定片段多少,然后将图元转化为多个片段位置信息。...GLSL函数声明C语言中没有太大区别,除了main函数返回值是void。比较特别的是,GLSL还提供了子程序这一类特别的函数,以便使用接口(在当前编程语言,如C++)控制着色器行为。

    1.6K11

    Android OpenGL ES入门

    地图导航应用:在需要呈现复杂地图、导航路径地理信息应用OpenGL ES可以用于实现高性能地图渲染。...娱乐和多媒体应用:通过OpenGL ES,开发者可以创建高质量娱乐和多媒体应用,包括图像视频编辑应用,艺术创作工具等。...初始化OpenGL使用类是GLSurfaceView,它可以处理OpenGL初始化过程中比较基本操作,如配置显示设备,在后台线程渲染,渲染是在显示设备中一个称为surface特定区域完成。..., width: Int, height: Int) { glViewport(0,0,width,height)      //是一个用于设置函数,定义了在屏幕上渲染图形区域...这个函数通常用于在渲染过程中指定绘图区域大小位置      //前两个参数x,y表示左下角在屏幕位置 } override fun onDrawFrame(p0: GL10

    33510

    图解浏览器

    当用户输入完内容并按下回车键时,浏览器会在当前页面执行 beforeunload 事件,你可以在这个钩子询问是否要离开当前页面,常见于一些表单提交场景。 接下来开始导航流程,浏览器进入加载状态。...,如果从一个页面打开了一个新页面,新打开页面与当前页面还属于同一个站点的话,那么新页面会复用当前页面的渲染进程。...: 栈垃圾回收比较简单,当一个函数执行结束后,JavaScript 引擎会通过向下移动 ESP 来销毁函数调用栈中所保存执行上下文,ESP 就是记录当前执行状态指针。...(占总面积一部分)是当前影响分数。...在上图中,有一个元素在一帧占据了一半。然后在下一帧,元素下移高度 25%。

    1.5K30

    OpenGL基本框架与三维对象绘制

    //这样,对当前图形变换对后面图形绘制不影响 glPopMatrix(); } //opengl 用户自定义绘图函数 void display(void) { //清除颜色缓存深度缓存...——在原有变换基础上,又增加了新变换; //为了不影响后续对象变换,采用压栈方式,保存当前变换矩阵 glPushMatrix(); { glTranslatef...在这个函数要求设置、投影、透视变换相关参数 void reshape (int w, int h) { //设置参数为整个窗口范围内 glViewport(0, 0, (GLsizei...60 度,视景体宽度高度比,视距(焦距) //(near)径(far)参数 //near = 1, far = 100, Z 轴负向顺着视线方向指向屏幕内 //X 轴正向向右...记得搭建好OpenGL环境,可以参照这篇文章:http://www.cnblogs.com/OctoptusLian/p/6834669.html 祝Coding愉快~~~

    73320

    OpenGL 学了那么久了,glViewport 你真的会用吗?

    OpenGL glViewport 函数用于定义(Viewport),即确定窗口中显示区域。...y:左下角Y坐标。 width:宽度。 height:高度。 glViewport函数作用是将正投影坐标(OpenGL默认坐标系)映射到屏幕上实际显示区域。...它将正投影坐标系点映射到屏幕上指定大小矩形区域内。 在使用OpenGL进行绘图时,我们通常需要先通过glViewport来设置,将整个窗口或窗口一部分作为渲染区域。...这样,我们可以指定绘制内容在窗口哪个位置显示出来。 正常显示时参数 这里传入参数为 glViewport(0,0,width,height),此时数据可以正常渲染到屏幕上。...可以正常绘制,没有超出屏幕范围,且大小为正常渲染四分之一。 glViewport() 作用总结 为归一化坐标转换为屏幕坐标的接口。换言之将整张纹理上数据,转换到屏幕上具体像素点接口。

    2.7K10

    WebGL简易教程(十三):帧缓存对象(离屏渲染)

    而在这篇教程,准备写出这样一个示例:分别在帧缓冲区颜色缓冲区绘制同一块地形,颜色缓冲区颜色信息不通过顶点缓冲区获取而通过帧缓冲区获取。...createProgram()就可以了,在需要传输数据绘制时候再去设置当前着色器gl.useProgram()。...参数取值gl.COLOR_ATTACHMENT0,WebGLOpenGL有所不同,WebGL只允许一个颜色关联对象而OpenGL允许多个。...绘制到帧缓存 为了声明当前绘制到帧缓存,首先将要绑定帧缓冲区对象gl.bindFramebuffer()。然后调用gl.viewport()函数定义一个绘图: ?...当然,设置切换着色器操作都是必须。相关代码如下: //开始绘制 var tick = function () { //...

    2.8K20
    领券