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

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

前面的文章介绍了如何 绘制三角形,在OpenGL ES中没有直接绘制矩形的方式,通过绘制2个三角形的方式绘制矩形。...绘制矩形的顶点shader: attribute vec4 vPosition; void main() { gl_Position = vPosition; } 绘制矩形的片段shader:...初始化索引数据,代码如下: var index = shortArrayOf(3,2,0,0, 1, 2) val indexBuffer = GLTools.array2Buffer(index) 绘制...上面设置的顶点虽然都是0.5,但不一定是正方形,0.5表示x轴或者y轴的一半,如果绘制的窗口本身是矩形,那么绘制出来的也是矩形,如何绘制出正方形呢?...绘制正方形需要根据绘制窗口的宽高计算顶点数据,计算方式如下: override fun onSurfaceChanged(p0: GL10?

1.2K10

【OpenGL】十三、OpenGL 绘制三角形 ( 绘制单个三角形 | 三角形绘制顺序 | 绘制多个三角形 )

文章目录 一、绘制三角形 二、三角形绘制顺序 1、绘制正面 2、三个点逆时针方向排列 3、三个点顺时针方向排列 4、设置点的正面方向 三、绘制多个三角形 四、相关资源 一、绘制三角形 ---- 三角形绘制即绘制一个面...glEnd 之间设置多个点 , OpenGL 会自动将三个点组成一个三角形面 , 绘制出来 ; 其中每个点都可以设置一个颜色值 , 面上的颜色都是通过三个点的颜色差值出来的 ; 代码示例 : //...加入一个前提 , OpenGL 只绘制模型正面, 不绘制模型背面 ; 正面就是 摄像机对着的那一面 ; 在渲染前 , 调用 glEnable(GL_CULL_FACE) 设置 , 即可设置 OpenGL...只绘制正面 , 不绘制背面 ; // 只显示正面 , 不显示背面 glEnable(GL_CULL_FACE); 默认情况下 OpenGL 会绘制正面 , 背面两面 ; 2、三个点逆时针方向排列...绘制效果 , OpenGL 绘制出来是空白的 ) : OpenGL 绘制效果 : 按照上述顺时针排列点 , 绘制不出三角形 ; 4、设置点的正面方向 上面将三个点按照顺时针排列 , 绘制不出来

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

    【OpenGL】十五、OpenGL 绘制三角形 ( 绘制 GL_TRIANGLE_FAN 三角形扇 )

    这三个点会绘制一个三角形 // 绘制三角形结束 glEnd(); // 将后缓冲区绘制到前台 SwapBuffers(dc); } 绘制效果 :...这三个点会绘制一个三角形 // 绘制三角形结束 glEnd(); // 将后缓冲区绘制到前台 SwapBuffers(dc); } 绘制效果...: 3、绘制 5 个点的情况 在 glBegin 和 glEnd 之间放置 5 个点 , 则 1,2,3 绘制一个三角形 , 1,3,4 绘制一个三角形 , 1,4,5 绘制一个三角形...: 4、绘制 6 个点的情况 在 glBegin 和 glEnd 之间放置 6 个点 , 则 1,2,3 绘制一个三角形 , 1,3,4 绘制一个三角形 , 1,4,5 绘制一个三角形...: 二、相关资源 ---- GitHub 地址 : https://github.com/han1202012/OpenGL ( GitHub 源码始终都会随着后续博客的进度更新覆盖 , 可能没有本博客的相关源码

    1.6K00

    1.opengl绘制三角形

    出于这个原因,刚开始学习现代OpenGL的时候可能会非常困难,因为在你能够渲染自己的第一个三角形之前已经需要了解一大堆知识了。...在本节结束你最终渲染出你的三角形的时候,你也会了解到非常多的图形编程知识。 而几何着色器是可选的,通常使用它默认的着色器就行了。...使用这些缓冲对象的好处是我们可以一次性的发送一大批数据到显卡上,而不是每个顶点发送一次。从CPU把数据发送到显卡相对较慢,所以只要可能我们都要尝试尽量一次性发送尽可能多的数据。...n行m列 和 m行p列才能相乘,所以是vec4而不是vec3,由于position 是位置所以应该是 (x,y,z,1.0f),如果是方向向量,则就是 (x,y,z,0.0f)....在真实的程序里输入数据通常都不是标准化设备坐标,所以我们首先必须先把它们转换至OpenGL的可视区域内。

    1.2K30

    【OpenGL】十四、OpenGL 绘制三角形 ( 绘制 GL_TRIANGLE_STRIP 三角形 | GL_TRIANGLE_STRIP 三角形绘制分析 )

    文章目录 一、绘制 GL_TRIANGLE_STRIP 三角形 二、GL_TRIANGLE_STRIP 三角形绘制分析 三、相关资源 一、绘制 GL_TRIANGLE_STRIP 三角形 ---- 该模式绘制首先在...//glBegin(GL_LINE_LOOP); // 绘制前后连接的点组成的线 , 并且收尾相连 // 绘制三角形面 glBegin(GL_TRIANGLE_STRIP);...glEnd(); // 将后缓冲区绘制到前台 SwapBuffers(dc); } 执行结果 : 二、GL_TRIANGLE_STRIP 三角形绘制分析 ----...GL_TRIANGLE_STRIP 三角形绘制分析 : 给代码中的点标上索引号 ; 有 4 个点 , 绘制的三角形个数是 4-2=2 个 ; 奇数索引点 1 : 当前点索引是奇数 1 ,...; 三、相关资源 ---- GitHub 地址 : https://github.com/han1202012/OpenGL ( GitHub 源码始终都会随着后续博客的进度更新覆盖 , 可能没有本博客的相关源码

    1.5K00

    Android OpenGL ES(三)-平面图形

    上一章Android OpenGL ES(二)-正交投影 的学习,我们已经能够画正常的图片图形了,这章我们会继续来绘制正方形和圆的这样的平面图形和绘制纹理。...正方形 因为OpenGL只提供给我们画三角形的方式,所以想要正方形的话,其实就是画两个三角形拼在一起。 一:使用GL_TRIANGLE_STRIP的方式 绘制方式-三角形带 ?...正方形2.png 三:使用GL_TRIANGLES和顶点矩阵数组加位置矩阵数组的方式 这种方法就是根据我们的数组,自己来定义绘制的顺序来,完成绘制两个三角形完成正方形的任务。 1....indexBuffer正方形.png 正方形小节 这里我们一共使用三种方式进行绘制 GL_TRIANGLES 将传入的顶点作为单独的三角形绘制,ABCDEF绘制ABC,DEF两个三角形 GL_TRIANGLE_FAN...纹理的大小 在标准的OpenGL ES 2.0中,纹理不必是正方形。但是每个纬度都应该是2的幂。POT纹理适用于各种情况。 纹理也有一个最大值,但是会根据不同的实现而变化。

    1.5K30

    《OpenGL ES 2.0 for Android》读书笔记

    EGLAPI Registry OpenGL的绘图方式 —— 点、线、三角形 我们都知道OpenGL是用来2D或3D绘图的,可以绘制直线、各类图形、各类图像。...OpenGL其实只能绘制三角形,确定三个顶点,然后就可以绘制一个三角形,多个三角形拼在一起就可以组成各式各样的图形,把图片资源贴到这些各式各样的图形上就可以实现图像的绘制。...所以,想要用OpenGL绘制图形,只需要确定两个问题:顶点、三角形上的颜色。 Air Hockey的效果图 通过本文的讲解,最终做出的效果如下。全部使用OpenGL绘制而成,并添加了交互逻辑。...使用Texture可以把各类图片加载到OpenGL中进而进行显示,从而实现炫酷的游戏场景。 ? 举个例子,上图中,游戏的背景是一张图片,而不是简单的纯色背景。...OpenGL-ES-2.0-for-Android 主要看一下下面两个功能: OpenGL_01_Simple_Color 实现最基本的绘制正方形 OpenGL_02_Simple_Texture 实现最基本的加载图片

    4.6K91

    图元装配和光栅化

    OpenGL ES 3.0 可以绘制以下图元: 三角形 直线 点精灵 三角形 OpenGL ES 支持的三角形图元有 GL_TRIANGLES、GL_TRIANGLE_STRIP、GL_TRIANGLE_FAN...点精灵对指定的每个顶点绘制。通常用于粒子效果当作点而非正方形绘制,从而实现高效渲染。 点精灵 是 指定位置和半径的屏幕对齐的正方形。..., pointSizeRange); OpenGL ES 3.0 将窗口的 左下 视为 原点区域, 而 点精灵 的原点为 左上。...如果绘制带有 三角形条带(GL_TRIANGLE_STRIP)或者 扇形(GL_TRIANGLE_FAN)的网格,则可以启用 图元重启 将这些网格连接在一起,而不是单独调用glDrawElements。...所以 如果通过深度测试,原始的深度值 将被保存到 深度缓冲区 中,而不是 深度值+偏移 。

    3.1K20

    OpenGLES-03 使用索引绘制矩形

    这篇文章我们同样借助上篇文章《OpenGLES-02 绘制基本图元(点、线、三角形)》的代码,使用另外一种画法来绘制一个矩形。...运行结果.png 如上代码所示,我们绘制的矩形是由2个三角形组成的,一个三角形3个顶点,共使用了6个顶点,其中第2个顶点与第4个顶点相同(0.5,-0.5,0.0),第3个顶点与第6个顶点相同(-0.5,0.5,0.0...其实对于矩形来说,它只有4个而不是6个顶点,绘制这个矩形,我们指定了右下角和左上角两次,这样就产生了50%的额外开销。...和顶点缓冲对象一样,EBO也是一个缓冲,它专门储存索引,OpenGL调用这些顶点的索引来决定该绘制哪个顶点。所谓的索引绘制(Indexed Drawing)正是我们问题的解决方案。...[_context presentRenderbuffer:_renderBuffer]; } 两种方式的运行结果是一样的,我们可以发现,运行图中的矩形是个长方形,而我们给的坐标,照理来讲应该是正方形的

    1.2K100

    OpenGL ES (iOS) 学习笔记 — 基础篇(一)

    这篇笔记并不是教程,主要是对学习后的体会做一些总结。 整个OpenGL ES基础知识可以分成四个部分: 一、Shader的应用。 二、基本图形的绘制和变换。 三、透视投影和正交投影以及摄像机。...Shader的应用 着色器编程(shader programming)是OpenGL ES2.0中的一个重要应用。主要是将图形处理流水线实现可编程管线,而不是以前的固定管线。...所以开发者不能只编写法线变换的Shader,而指望固定功能帮你完成纹理坐标生成。顶点处理器只是操作顶点而不是面,所以顶点处理器不能进行类似背面剔除这样的操作。...OpenGL可以绘制点、直线和三角形,这是它的基本图形,正方形是由2个三角形拼在一起绘制成的,其他形状以此类推。...除了绘制三角形,还可以通过glDrawArrays绘制直线,点等。 第四步,Rasterization 这一步会栅格化绘制的形状。

    2.6K100

    iOS基于GPUImage的图像形变设计(复杂形变部分)

    来调整三角形(vertices对应新地形变后特征点,textureCoordinates对应原图的原始特征点) 4) 通过OpenGL绘制相应的三角形,即得到形变后的图像 这里需要单独设置的内容相比简单形变要复杂一些...,需要同时设置多组vertices和textureCoordinates,并且在绘制三角形时也应该绘制GL_TRIANGLES而非GL_TRIANGLE_STRIP,这是因为很难得到连续顶点的三角形数组...,否则会形成空洞(对于上图的例子,需要在最外围设置一个正方形,保持正方形的4条边不动的情况下,调整正方形区域内的顶点,从而可以达到形变后的图像任然连续这一个结果)。...通过对小三角形顶点的位置调整,来大致近似每一个点的位置移动,从而便于OpenGL进行渲染。...,也可以通过将图像分割成网格状,再绘制每一个小三角形的方式来实现。

    2.2K110

    Android 如何实现气泡选择动画

    首先,我们需要理解 OpenGL 中的基础构件三角形,因为它是和其它形状类似且最简单的形状。所以你绘制的任意图形都是由一个或多个三角形组成。...在动画实现中,我使用两个关联的三角形代表一个实体,所以我画圆的地方像一个正方形。 绘制一个形状至少需要两个着色器 —— 顶点着色器和片段着色器。通过名字就可以区分他们的用途。...顶点着色器负责绘制每个三角形的顶点,片段着色器负责绘制三角形中每个像素。 [1240] 三角形的片段和顶点 顶点着色器负责控制图形的变化(例如:大小、位置、旋转),片段着色器负责形状的颜色。...a_UV 变量有两个用途: 确定当前片段和正方形中心位置的距离。根据这个距离,我可以调整片段的颜色而实现画圆。 正确地将 texture(照片和国家的名字)置于图形的中心位置。...每次画面绘制,都需要调用 World 的 step() 方法移动所有的实体。之后你可以在图形的新位置进行绘制。 我遇到的问题是 World 的重力只能是一个方向,而不能是一个点。

    2.7K20

    《OpenGL编程指南》第九版——2.绘制两个三角形

    我将跟随OpenGL编程指南对每个例子进行详解,每个例子将贴出实验结果和实验代码,仅供参考,代码部分可能我会进行一些修改与官方代码不同。 实现效果: ?...还创建了一个与窗口关联的OpenGL设备环境。在使用环境之前,我们需要设置它为当前环境。在一个程序中我们可以设置多个设备环境,但是用户指令只会传递到当前设备环境中。...2.调用glBindBuffer规定他们到OpenGL环境。 3.所有缓存对象都可以使用glDeleteBuffers直接释放。...,最后指定数据在OpenGL中的使用方式。...#version 400 core表示我们使用OpenGL4.5版本对应的GLSL语言 vPosition是输入变量被声明为in指定了数据进入着色器的流向,最后字段layout(location =

    1.1K30

    从关键概念开始,万字带你轻松入门 WebGL

    OpenGL 是哪个坐标系? 那么 OpenGL 是左手坐标系,还是右手坐标系?答案是 都不是。 比如我们现在有两个点。...大家可以先忽略为什么顶点是 vec4 而不是 vec3。...最后一步我们使用 gl.drawArrays 开始渲染了,我们选择渲染三角形,当然还可以把类型变成线段,最后就是三条线的三角形,而不是填充的三角形,我们有顶点缓冲区中有三个顶点,所以这里设置了渲染 3...如前所述,WebGL 是很底层的 API,它只能用来画点、线和三角形,那么我们如何来画正方形呢? 其实大家看到的那些精美的 3D 模型,其实都是一个个非常小的三角形组成的。...可以使用两个三角形组合来表示一个正方形,立方体有 6 个面,也就需要 12 个三角形,每个三角形需要 3 个顶点,那么最终我们就需要 36 个顶点!

    2K21

    用OpenGL绘制平滑着色的三角形与相交区域的混合着色

    一、三角形的绘制 在OpenGL中,面是由多边形构成的。三角形可能是最简单的多边形,它有三条边。可以使用GL_TRIANGLES模式通过把三个顶点连接到一起而绘出三角形。...使用GL_TRIANGLE_STRIP模式可以绘制几个相连的三角形,系统根据前三个顶点绘制第一个多边形,以后每指定一个顶点,就与构成上一个三角形的后两个顶点绘制形的一个三角形。...使用GL_TRIANGLE_FAN模式可以绘制一组相连的三角形,这些三角形绕着一个中心点成扇形排列。...三、明暗处理 在绘制多边形时,我们常常指定绘制的颜色,而在OpenGL中,颜色实际上是对各个顶点而不是对各个多边形指定的。...四、多边形的模式 多边形不是必须用当前颜色填充的。默认情况下绘制的多边形是实心的,但可以通过指定把多边形绘制为轮廓或只是点(只画出顶点)来修改这项默认行为。

    2.2K110
    领券