首页
学习
活动
专区
工具
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.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

OpenGL窗口创建

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

24110

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.5K00

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

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 =

3.7K10

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.5K30

关于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.4K10

如何使用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.1K100

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

OpenGL ES for Android 绘制旋转地球

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

1.5K20

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

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

1.7K30

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

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

83020

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

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

36640

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建立在一个安全平台,该平台可以沟通健康数据仓储并实现信息安全流动。他们是连接数据共享健康生态系统核心,它允许数据在广泛利益相关者之间自由流动。

673130
领券