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

OpenGL ES for Android 绘制矩形和正方形

老 孟 一个 有态度 的程序员 ? 前面的文章介绍了如何 绘制三角形,在OpenGL ES中没有直接绘制矩形的方式,通过绘制2个三角形的方式绘制矩形。...绘制矩形的顶点shader: attribute vec4 vPosition; void main() { gl_Position = vPosition; } 绘制矩形的片段shader:...,存放于assets/glsl目录下,readAssetsTxt为读取assets目录下文件的公用方法。...上面设置的顶点虽然都是0.5,但不一定是正方形,0.5表示x轴或者y轴的一半,如果绘制的窗口本身是矩形,那么绘制出来的也是矩形,如何绘制出正方形呢?...绘制正方形需要根据绘制窗口的宽高计算顶点数据,计算方式如下: override fun onSurfaceChanged(p0: GL10?

1.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【OpenGL】窗口的创建

    用glViewport设置 OpenGL 渲染窗口的大小,前两个参数设置窗口左下角的位置,第三个和第四个参数以像素为单位设置渲染窗口的宽度和高度,如果视口尺寸设置为小于 GLFW 尺寸的值;然后,所有...OpenGL 渲染都将显示在一个较小的窗口中 glViewport(0, 0, 800, 600); 当用户调整窗口大小时,视口也应该进行相应的调整,注册一个函数将 GLFWwindow 作为其第一个参数...),并将其显示为输出到屏幕 双缓冲区 当应用程序在单个缓冲区中绘制时,生成的图像可能会显示闪烁问题。...这是因为生成的输出图像不是瞬间绘制的,而是逐像素绘制的,通常从左到右和从上到下绘制。 由于此图像在呈现时不会立即显示给用户,因此结果可能包含伪影。...为了规避这些问题,窗口化应用程序应用双缓冲区进行渲染。 前端缓冲区包含屏幕上显示的最终输出图像,而所有渲染命令都绘制到后端缓冲区。

    34310

    【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★

    文章目录 一、导入 OpenGL 的两个头文件 二、链接 OpenGL 库 三、将 Windows 桌面窗口改成 OpenGL 窗口 四、获取窗口设备 五、设置像素格式描述符 六、设置像素格式 七、创建并设置...| 注册窗口 | 创建窗口 | 显示窗口 ) 完成了 桌面初始化的操作 , 注册桌面窗口 , 创建桌面窗口 , 显示桌面窗口 ; 本篇博客开始进行 OpenGL 渲染环境初始化 ; 一、导入 OpenGL...创建窗口流程是先 注册窗口 , 然后 创建窗口 , 最后 显示窗口 ; 将 Windows 桌面窗口改成 OpenGL 窗口操作是在 创建窗口完成后 进行的 ; 下面开始逐个步骤讲解 , 如何初始化...OpenGL 窗口 ; 四、获取窗口设备 ---- 窗口设备在初始化 OpenGL 上下文 , 和进行 OpenGL 绘制时都需要用到 , 这里设置到全局变量中 ; // 窗口设备 // 提取到全局变量中...绘制标志位 dwFlags 绘制标志位中可以设置多个标志位 , 如下代码中的标志位含义 : PFD_DRAW_TO_WINDOW : 绘制到桌面窗口 PFD_SUPPORT_OPENGL : 支持 OpenGL

    1.7K01

    OpenGL 的 glDrawElements 绘制方法

    在之前的绘制中,我们都是通过 glDrawArrays 方法来实现的,它会按照我们传入的顶点顺序和指定的绘制方式进行绘制。...回顾一下之前提到的绘制类型: 绘制类型 绘制方式 GL_POINTS 将传入的顶点坐标作为单独的点绘制 GL_LINES 将传入的坐标作为单独线条绘制,ABCDEFG六个顶点,绘制AB、CD、EF三条线...GL_TRIANGLES 将传入的顶点作为单独的三角形绘制,ABCDEF绘制ABC,DEF两个三角形 GL_TRIANGLE_STRIP 将传入的顶点作为三角条带绘制,ABCDEF绘制ABC,BCD,CDE...,那么六个面,每个面由两个三角形组成,就得向渲染管线传入 36 个顶点,36 个顶点按照顺序进行绘制,而实际上,一个矩形也就才 8 个顶点而已。...然后再向渲染管线传递要绘制的顶点数据的索引,根据索引从顶点数据中取出对应的顶点,然后再按照指定的方式进行绘制。 如下图所示,图片截自《OpenGL ES 3.x 游戏开发上卷》: ?

    2.4K21

    opengl-球体的绘制

    球体 opengl-pbr 光照一讲里,以球体为案例进行说明。...球体的绘制第一次接触理解花了点时间 一、球体坐标分解 球体坐标分解 按照经纬度来理解,经度是y轴上的切面,维度是x-z 平面的弧度 经纬度 将y轴切分成64等分,x-z平面切分成64等分的扇形 y轴从上到下取值为...这里有个坑,一开始没理解GL_TRIANGLE_STRIP,走了弯路,实际上理解了GL_TRIANGLE_STRIP,就明白代码中绘制的逻辑 glDrawElements(GL_TRIANGLE_STRIP...GL_TRIANGLE_STRIP,起始三个点,后面没增加一个点就增加一个三角形 三角形绘制模式 为保证所有三角形绘制都遵循顺时针原则(剔除中用到),要求当前增加的点角标为奇数:绘制顺序T=[n-1,...n-2, n] 为偶数:绘制顺序T=[n-2, n-1, n] 参考下图,自己拿笔画一画就明白了 绘制顺序 绘制球体的其他代码就很好理解了不一一说明 unsigned int sphereVAO =

    4K10

    canvas画布实现矩形的绘制

    简单实现两种矩形的绘制: 第一种矩形背景填充简单说就是背景填充的实心矩形 代码实现: 绘制一个实心矩形cv.fillRect(x,y,width,height)绘制之前声明绘制的实心矩形颜色使用fillStyle...document.getElementById('canvas'); //获取绘画环境 var cv=c.getContext('2d'); //指定填充颜色  cv.fillStyle='red';  //绘制一个矩形...,矩形内部没有填充可以设置矩形线条的颜色,线条宽度也叫空心矩形 代码实现: 绘制一个空心矩形cv.strokeRect(x,y,width,height)绘制之前声明绘制的实心矩形颜色使用strokeStyle...strokeRect,样式等属性使用在构造矩形之前进行使用,填充相关使用fill,空心相关的使用stroke ---- get一下:         在矩形内进行清除已经绘制矩形的某个区域可以使用清除实现...strokerect(x,y,width,height) // cv.strokeRect(50,80,220,220); //清除绘图部分clearRect(x,y,width,height),清空矩形内的像素

    2.6K30

    关于c#winform用sharpGL(OpenGL)绘制不出图形,绘制窗口是个黑框的坑

    转到c#下用大牛们对opengl的支持库,比如sharpGL,使用起来需要非常的严谨 就比如: gl.Color(0.0f, 0.0f, 1.0f);这个设置颜色的代码 在c++下不管是0.0f也好还是...0也好都可以,而在c#下sharpGL没有写0.0f的这种格式 图像就完全绘制不出来。...还有一个点就是在winfrom下 绘制的图形默认是把你们整个窗口都覆盖的 你这个窗口的视距就是贴着这个图形的 如果你没有加这句: gl.Translate(0.0f, 0.0f, -6.0f);将图形往后移动几个单位...,你在winfrom的界面可能会全是黑的 让你觉得你没有绘制出图形出来。。。。...这就是我在c#下开发opengL总结的两个坑。 那么如果你出现了其他绘制的问题,自己还觉得代码逻辑没问题的话,仔细检查一下格式。

    1.6K10

    如何使用CSS绘制一个响应式的矩形

    如何使用CSS绘制一个响应式的矩形 背景: 最近因为需要用到绘制类似九宫格的需求,所以研究了一下响应式矩形的实现方案。...因为pading-top与padding-bottom的百分比取值来自于元素的宽度,所以,设置值为100%就实现了我们想要的功能。...实现更多的功能 想要实现更多比例的形状,其实就是修改::before中的pading-top或者padding-bottom的值即可。...square::before { padding-top: (3 / 4 * 100%); } // 1: 2 .square::before { padding-top: 200%; } 当然,上边的实现都只是一个简单的矩形...,如果你的矩形里边还要有一些内容的话,需要给元素添加以下几个属性: .content { position: absolute; top: 0; right: 0; bottom: 0;

    2.2K100

    【OpenGL】十二、OpenGL 绘制线段 ( 绘制单条线段 | 绘制多条线段 | 依次连接的点组成的线 | 绘制圈 | 绘制彩色的线 )

    ) 六、绘制圈 GL_LINE_LOOP ( 奇数个点 ) 七、绘制彩色的线 八、相关资源 一、设置线宽度 ---- 线的绘制宽度是 OpenGL 状态机中的一个值 , 通过 glLineWidth...) 和 glEnd() 之间设置的点 , 会被自动当做线的两个端点 , 如果设置 4 个点 , OpenGL 会按照顺序 , 从上到下 , 两两组合成一条线段 ; 如在上述 glBegin 和 glEnd...在绘制每个点之前 , 都设置当前的颜色值 , 即 OpenGL 状态机中的当前颜色值 , 第一个点 glVertex3f(0.0f, 0.0f, -10.0f) , 绘制前设置的是 白色 , 第二个点..., 第 3 个点蓝色 ; 线段 1 白色 ~ 绿色渐变 , 线段 2 绿色 ~ 蓝色渐变 , 线段 3 蓝色 ~ 白色渐变 , 这是 OpenGL 固定管线差值出来的颜色 ; 八、相关资源...---- GitHub 地址 : https://github.com/han1202012/OpenGL 博客源码快照 : https://download.csdn.net/download/han1202012

    4.6K01

    OpenGL ES for Android 绘制旋转的地球

    老 孟 一个 有态度 的程序员 ? No 图 No Code,上面旋转的地球是不是很酷炫,下面就让我们开始说说如何绘制旋转地球吧?绘制旋转地球需要3个步骤: 计算球体顶点数据。 地球纹理贴图。...计算球体顶点数据 我们知道OpenGL中最基本的图元是三角形,任何复杂的图形都可以分解为一个个的三角形,球体也不例外,假设球体上有“经纬度”,通过“经纬度”将球体分割为一个个的四边形,如下图: ?...在把这些四边形分割为2个三角形,所以绘制球体的关键是计算“经纬度”相交的点的坐标。...最难的顶点坐标和纹理坐标已经获取,下面开始介绍如何绘制地球。...,在OpenGL ES 绘制纹理文章中已经详细介绍,图片纹理的相关内容也可以参考此文章。

    1.7K20

    OpenGL 学习系列---基本形状的绘制

    在之前的一篇博客中,讲述了 OpenGL 基础绘制流程 及相关的代码,其中关于 OpenGL 程序编译部分都是可以在其他项目中接着复用的,接下来会讲到如何去绘制其他的基本图元。...glDrawArrays(GL_TRIANGLES, 0, 3); 绘制三角形结果如图: ? 绘制矩形 显然,OpenGL 是没有提供矩形这一基本图元的,但是我们可以用两个三角形来拼接成一个矩形。...OpenGL 中提供了一个绘制类型叫做三角形扇,如下图所示: ? 在上图中,矩形的每一条边上的顶点都被两个三角形使用了,而且中心的顶点被所有四个三角形使用了。...我们不必输入四个三角形的顶点数据来绘制四个三角形从而组成矩形,可以告诉 OpenGL 重用那些顶点数据,把这些顶点作为一个三角形扇绘制。...那么问题来了,OpenGL 到底为我们提供哪些绘制方式呢?如下表所示: ? 绘制圆形 现在我们要绘制一个圆形,显然 OpenGL 是没有提供圆形的绘制类型的,这就要用到上面提供的绘制方式了。

    1.9K40

    Canvas绘制可变换矩形的知识点及绘制思路

    能够拖拽变换的矩形 这个功能很常见,比如手机中的照片裁剪,如图: 如上图:当鼠标位于图片区域四个角时或上下左右四条边时,鼠标样式会变成一个重置大小的样式。此时,我们可以移动鼠标,对该区域进行变换。...指示双向重新设置大小 缩放 zoom-in 放大 zoom-out 缩小 变换过程的大致逻辑 在canvas中添加一个矩形。...mousedown鼠标按下时记录当前鼠标位置,mousemove移动鼠标时计算偏移量,该偏移量同时也是矩形的偏移量。...mousemove移动鼠标时更新矩形四个角及四条边的路径信息,以便鼠标移到对应位置时设置对应的指针样式。 mousemove移动鼠标时进行各种判断(拖动的是左上角?右上角?顶边?底边?...等等),同时基于偏移量,重新设置矩形的位置及宽高。 具体代码大致有200-300行,贴个核心move()方法出来,有兴趣的可以研究一下。 posNo 代表当前拖动的位置。

    93820

    PixiJS 源码解读:绘制矩形的渲染过程讲解

    之前写了一篇 PixiJS 绘制矩形,简单说了一下 PixiJS 是怎么绘制矩形的。 《PixiJS 源码解读:绘制矩形,底层都做了什么?》 它更多的讲解上层的东西,没花太多笔墨描绘底层渲染的流程。...要求读者熟悉 WebGL 的基础知识。 本文会 以绘制设置了填充和描边的矩形为例子,看底层 WebGL 的调用执行。...着色器(Shader)是一种类 C 语言 GLSL,用于描述需要绘制的 顶点信息和颜色信息。 着色器模板 首先是 字符串模板,等着根据配置填充成一个完整的着色器代码片段。...[i].render(renderer); } } } 对于前文的示例代码,会分析矩形属性,构建顶点和片元数据,然后执行 WebGL 的绘制 API。...这些三角形的点,根据不同图形(比如矩形和圆形),需要用不同算法去计算出来,然后把数据通过 WebGL 命令交给 GPU,让它帮我们绘制出来。

    50040

    OpenGL中的二维编程——从简单的矩形开始

    输入与窗口函数不属于OpenGL核心库,但是由于它们在交互式程序中的重要地位,这类函数已被包含在GLUT库中。这些函数使我们能够对屏幕中的窗口进行控制并使用鼠标和键盘。...函数glutCreateWindow()将一个窗口以默认尺寸(300*300像素)显示在屏幕的默认位置上(屏幕左上角)。该函数的参数使我们可为窗口创建一个标题。...int glutCreatewindow(char * title) //在屏幕上创建一个窗口,该窗口的标题由参数title给出。 //在多窗口情况下,该函数返回一个标识所创建窗口的整数。...五、矩形的绘制 void glVertex(type xcoordinate,type ycoordiante,...) void glVertex(type...display() //定义了所要绘制的图形实体 3 { 4 glClear(GL_COLOR_BUFFER_BIT); 5 glBegin(GL_POLYGON); 6

    1.8K40

    【译】如何绘制一张完整的健康图谱

    随着科技的进步,只要我们展开想象的翅膀,无限的商机会在等待我们。最近的数字健康投资告诉我们,瓦解旧格局的力量正在迅速崛起,一个崭新的未来正在等待我们。...在你开始通过mint.com管理你的财务之后,你就很难再回到以前了。Mint为你提供了金融信息的一站式服务,成为连接你与储存你大量数据的金融机构的智能连接器。数据是安全的,流动的,可转化的。...受互联网的经过验证的技术的鼓舞,阿尔戈项目的目标是用一个更精简、网络友好的版本取代沉重、复杂的卫生交互性标准。...没有这些功能,数据的流动性仍将是白日梦,它只会将数据锁定在各自的应用和电子病历中的数据仓库中,无法防止某些错误的发生以及改善医疗服务的效果,或降低服务的成本。...API建立在一个安全的平台,该平台可以沟通健康数据仓储并实现信息的安全流动。他们是连接数据共享的健康生态系统的核心,它允许数据在广泛的利益相关者之间的自由流动。

    703130
    领券