首页
学习
活动
专区
工具
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.7K30

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的生命周期中进行绘制。

82560
  • 写给 python 程序员的 OpenGL 教程

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

    3.3K30

    小菜学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 | CSDN 博文精选

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

    9.4K22

    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.2K01

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

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

    1.7K80

    实验5 立方体显示与变换

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

    1.1K41

    【OpenGL】窗口的创建

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

    34310

    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.6K10

    实验6 OpenGL模型视图变换

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

    2.1K30

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

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

    1.4K30

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

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

    90910

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

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

    1.7K11

    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

    36010

    图解浏览器

    当用户输入完内容并按下回车键时,浏览器会在当前页面执行 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愉快~~~

    75620

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

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

    3.2K10

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

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

    2.8K20
    领券