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

如何正确使用带有闪烁数组的glVertexPointer()和glDrawArrays来绘制四边形?

带有闪烁数组的glVertexPointer()和glDrawArrays用于绘制四边形的正确使用方法如下:

首先,glVertexPointer()函数用于指定顶点数据的格式和位置。它的参数包括:

  • size:指定顶点坐标的维数,通常为2、3或4。
  • type:指定顶点数据的数据类型,可以是GL_BYTE、GL_UNSIGNED_BYTE、GL_SHORT、GL_UNSIGNED_SHORT、GL_INT、GL_UNSIGNED_INT、GL_FLOAT或GL_DOUBLE。
  • stride:指定每个顶点数据的字节间隔,如果顶点数据是紧密排列的,可以将其设置为0。
  • pointer:指定顶点数据数组的指针,可以是指向客户端内存中数据的指针,也可以是指向存储在缓冲区对象中数据的偏移量。

接下来,使用glEnableClientState()函数启用顶点数组:

代码语言:txt
复制
glEnableClientState(GL_VERTEX_ARRAY);

然后,使用glVertexPointer()函数设置顶点数据数组:

代码语言:txt
复制
GLfloat vertices[] = {x1, y1, x2, y2, x3, y3, x4, y4};
glVertexPointer(2, GL_FLOAT, 0, vertices);

在绘制之前,可以使用glColorPointer()函数设置颜色数据数组,glEnableClientState()启用颜色数组,并使用glDrawArrays()函数执行绘制操作:

代码语言:txt
复制
GLfloat colors[] = {r, g, b, a};
glColorPointer(4, GL_FLOAT, 0, colors);

glEnableClientState(GL_COLOR_ARRAY);

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

在这个例子中,我们使用glDrawArrays()函数来绘制四边形。第一个参数指定绘制的图元类型,GL_TRIANGLE_STRIP表示按顶点顺序连接三角形,最后形成四边形。第二个参数指定起始顶点的索引,第三个参数指定绘制的顶点数。

推荐的腾讯云相关产品是云服务器(CVM)和云原生应用引擎(TKE):

希望以上信息对您有帮助。

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

相关·内容

Android开发笔记(一百五十五)利用GL10描绘点、线、面

上一篇文章介绍了GL10常用方法,包括如何设置颜色、如何指定坐标系、如何调整镜头参数、如何挪动观测方位等等,不过这些方法只是绘图前准备工作,真正描绘点、线、面的制图工作并未涉及...于是OpenGL使用浮点数组表达一块平面区域时候,数组大小=该面的顶点个数*3,也就是说,每三个浮点数用来指定一个顶点x、y、z三轴坐标,所以总共需要三倍于顶点数量浮点数才能表示这些顶点构成平面...// 指定三维物体顶点坐标集合 // gl.glVertexPointer(***); // 在顶点坐标集合之间绘制点、线、面 // gl.glDrawArrays...glDrawArrays,其中前者指定了三维物体顶点坐标集合,后者才在顶点坐标集合之间绘制点、线、面。...按照本文演示要求,只需绘制一个立方体线段框架,因此可按以下格式调用glDrawArrays方法: // 每个面画闭合四边形线段,从第0个点开始绘制绘制四边形所有顶点(pointCount

70630

Android开发之绘制平面上多边形功能分析

这个方法中pointer参数用于指定顶点坐标值,但这里并未使用三维数组指定每个顶点X、Y、Z坐标的值,pointer依然是一个一维数组,其格式为(x1,y1,z1,x2,y2,z2,x3,y3,z3…...绘制完成后,调用GL10glFinish()方法结束绘制;并调用glDisableClientState(int)方法停用顶点坐标数据,顶点颜色数据。...掌握上面的步骤之后,接下来通过示例程序绘制几个简单图形。...); gl.glDisableClientState(GL10.GL_VERTEX_ARRAY); } } 上面的程序使用GL10绘制图形关键代码:加载顶点位置数据;加载顶点颜色数据;调用GL10glDrawArrays...应为glDrawArrays方法第一个参数指定绘制模式,GL10.GL_TRIANGLES是绘制三角形, GL10.GL_TRIANGLE_STRIP是用多个三角形绘制多边形。

40930
  • OpenGL学习笔记 (二)- 顶点与绘制指令

    顶点数组对象 顶点数组对象(Vertex Array Object,VAO)就是存储顶点数据数组,显然其中数据已经有其组织形式了,所以VAO可以直接用于绘制指令。...由于现代OpenGL顶点数据都存在于缓冲对象中(曾经可以使用glVertexPointer函数),所以现在VAO已经不自带数据了,因此它需要绑定一个VBO。...绘制指令 OpenGL中以glDraw开头就是绘制指令。虽然glDraw开头函数众多,不过它们大致可以分为以glDrawArraysglDrawElements为首两族。...所有绘制指令对象都是VAO,因此在绘制前程序需要绑定一个正确VAO。同时,绘制时需要传入一个模式以确定如何组装顶点为图元,可被接受就是“几何图元”节中提到。...glDrawArrays一族直接对缓冲内数据进行绘制。因为直接使用缓冲内数据,因此只需要给出首个顶点偏移与所用顶点数即可。一个使用glDrawArrays进行绘制完整例子如下。

    1.6K10

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

    通常用于初始化伴随GLSurfaceView整个生命周期数据设置初始颜色。...因为在onSurfaceCreated时候我们是不知道纸宽高,所以有一些长宽相关初始化工作还得在此函数中做。...多说一句,系统如何知道需要重画了呢?当然是你要告诉它…… 调用GLSurfaceViewrequestRender ()方法,使其重绘。...虽然在OpenGL中,我们画是3D物体,但手机屏幕毕竟是一个平面。我们在生活中,看见也只是一个平面。那么,一个3D物体,我们看到应该是什么样,取决于我们投影矩阵如何设置。...大致包含了: 清除缓存 启动顶点数组模式 启动颜色数组模式 移动画笔 设置图形 设置颜色 关闭顶点数组模式 关闭颜色数组模式 绘制结束 至此,便完成了一个平平无奇三角形绘制过程。

    81660

    Android开发笔记(一百五十六)通过渲染纹理展示地球仪

    上一篇文章介绍了如何使用GL10描绘三维物体线段框架,后面给出立方体球体效果图,虽然看起来具备立体轮廓,可离真实物体还差得远。...在OpenGL体系之中,纹理坐标又称UV坐标,通过两个浮点数组设置一个点纹理坐标(U,V),其中U表示横轴,V表示纵轴。...启用深度测试目的,是只绘制物体朝向观测者正面,而不绘制物体背面。上一篇文章立方体球体因为没有开启深度测试,所以背面的线段也都画了出来。...本文开头提到纹理坐标是二维,因此表达三个顶点纹理坐标只需大小为3*2=6浮点数组。至于详细纹理坐标计算,则依据具体物体形状以及材质尺寸决定,这里不再赘述。...因为材质是一片一片花色,所以调用glDrawArrays绘制方法时,要指定采取GL10.GL_TRIANGLE_STRIP方式,表示本次绘图画是一个三角形平面,这样从位图对象裁剪出来花纹就贴图完成了

    1K30

    【Android 音视频开发打怪升级:OpenGL渲染视频画面篇】一、初步了解OpenGL ES

    CPUGPU 在手机上,有两大元件,一个是CPU,一个是GPU。而手机上显示图形界面也有两种方式,一个是使用CPU渲染,一个是使用GPU渲染,可以说,GPU渲染其实是一种硬件加速。...GL_TRIANGLE_FAN 通常情况下,一般使用GL_TRIANGLE_STRIP绘制模式。那么一个四边形顶点顺序看起来是这样子(v1-v2-v3)(v2-v3-v4) ?...: GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 3) 绘制有两种方式:glDrawArraysglDrawElements,两者区别在于glDrawArrays...是直接使用定义好顶点顺序进行绘制;而glDrawElements则是需要定义另外索引数组确认顶点组合绘制顺序。...接下来,就用纹理显示一张图片,看看纹理到底怎么使用。 建议先看清楚绘制三角形流程,绘制图片就是基于以上流程,重复代码就不再贴出。

    1.9K51

    面试官:纹理贴图必须要输入顶点坐标或纹理坐标吗

    最近知识星球一位同学,面试时被问到:纹理贴图必须要输入顶点坐标或纹理坐标吗? 他一下子被这个问题问蒙了,虽然他知道正确答案是否定,但是说不上来理由。...全屏三角形 全屏三角形实际上是一种讨巧优化方法,用于渲染全屏四边形或矩形,而不需要使用两个三角形顶点缓冲区。...它不需要显式生成或传递,因为在调用绘制命令(如 glDrawArrays)时,OpenGL 会自动为每个顶点提供该索引。...当你使用 glDrawArrays(GL_TRIANGLES, 0, 3) 绘制一个包含三个顶点三角形时,gl_VertexID 会依次被设置为 0、1 2。...这个索引值可以用来计算每个顶点位置其他属性。

    17621

    15.opengl高级-混合

    于是就有了“顶点着色器”、“片元着色器”,开发者不用复杂GPU硬件接口打交道,就能实现酷炫图像效果。 ?...草纹理实现 纹理使用理解:纹理必须要贴在一个几何表面上,草纹理不能凭空绘制出来,也是附着在一个正方形上。正方形平移四次绘制,就可以生成4个草纹理。...注意:顶点着色器中position有位移操作,但是纹理不需要再单独进行位移操作 草纹理附着四边形 float transparentVertices[] = { // positions...混合问题分析及解决 深度测试并不能智能分析出哪些片元需要考虑混合,只会“死脑筋”按照绘制顺序做深度测试,如果先绘制了前面的图形(即使前面的图元有透明部分),后面绘制图形进行深度测试会失败会被丢弃...所以,按照从后到前顺序(Z坐标由远及近)绘制是没有问题,那么问题来了,总不能每次手动调整图形绘制前后顺序吧? 比较简单处理,通过排序调整绘制顺序。

    72520

    OPenGL ES _ 入门练习_003

    www.jianshu.com/p/45d959c8f1db) [OpenGL ES_着色器_实战03](http://www.jianshu.com/p/0f740901da59) 演示: 手机截图 学习目标 绘制一个移动正方形...技术 使用OpenGL ES 1.0 ---- 实现思路 /* *  步骤1: 创建一个 GLKViewController *  步骤2: 创建一个EAGContext 跟踪我们所有的特定状态,命令资源...(0.0, (GLfloat)(sinf(transY)/2.0), 0.0); transY += 0.075f; } /** *  加载顶点数据 */ -(void)loadVetexData{ glVertexPointer...*/ -(void)draw{ glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); } ---- 说明: 我们使用GLKViewController 控制器实现,这个类是苹果公司给我们提供封装了一部分代码...]; } // GLKViewController  提供了一个回调函数,把我们加载绘制代码写在里面即可完成 -(void)glkView:(GLKView *)view drawInRect:(CGRect

    30120

    一看就懂 OpenGL 基础概念(3):各种 O 之 VBO、EBO、VAO丨音视频基础

    , 0, 3); // 使用 glDrawArrays 绘制 整个过程还是比较浅显易懂:做了一次 CPU 到 GPU 数据拷贝。...7.2、VAO 通过对 VBO、EBO 使用,我们可以减少 CPU 到 GPU 内存拷贝提高性能,但是如果我们需要绘制大量顶点物体时,每次绘制都需要绑定正确缓冲对象并为每个物体配置所有顶点属性...是否可以用一种对象储存这些状态配置,使得我们需要时候直接绑定这个对象就可以切换到正确状态呢?这就是 VAO 要解决问题。...: glBindVertexArray(VAO); // 绑定使用 VAO 绘制 glDrawArrays(GL_TRIANGLES, 0, 3); // 使用 glDrawArrays 绘制 glBindVertexArray...7.3、VBO、EBO VAO 内存布局 上面我们介绍了 VBO、EBO VAO 使用,大致知道了它们作用,我们继续来看看使用它们时内存布局加深一下印象: 当我们 Vertex Shader

    1.1K10

    OpenGL ES _ 入门_练习001

    技术: OpenGL ES 1 实现思路: 第一步: 创建GLKViewController 控制器(在里面实现方法) 第二步: 创建EAGContext 跟踪所有状态,命令资源 第三步: 生成球体顶点坐标颜色数据...第三步: 清除命令 第四步: 创建投影坐标系 第五步: 创建对象坐标 第六步: 导入顶点数据 第七步: 导入颜色数据 第八步: 绘制 ---- 代码部分 /** *  创建EAGContext 跟踪所有状态...第一个参数:每个顶点数据个数,第二个参数,顶点数据数据类型,第三个偏移量,第四个顶点数组地址 */ - (void)loadVertexData{ glVertexPointer(3, GL_FLOAT...GL_CULL_FACE);                                                            //3 glCullFace(GL_BACK); // 剔除背面 glDrawArrays...GL_TRIANGLE_STRIP, 0, (m_Slices +1)*2*(m_Stacks-1)+2); // free(_vertexArray); // free(_colorsArray); } /** *  生成球体顶点坐标颜色数据

    27710

    图元装配光栅化

    种模式 start : 指定indices最小数组索引 end : 指定indices最大 数组索引 count : 指定要绘制索引数量 type : GL_UNSIGNED_BYTE、GL_UNSIGNED_SHORT...例如:假设三个 三角形条带(GL_TRIANGLE_STRIP)分别有元素索引(0,1,2,3)(8,9,10,11),如果想用图元重启一次调用绘制两个条带,索引类型为GL_UNSIGNED_BYTE...使用非实例化绘图调用时,gl_InstanceID将返回0。 下面两个代码片说明如何用一次实例化绘图调用绘制多个几何形状,其中每个实例颜色不同。...剔除操作就是 抛弃背向观看者三角形。 如何确定三角形方向:看对应三角形一词顶点方向是 顺时针(CW)还是逆时针(CCW)。 三角形方向通过以窗口坐标表示有符号三角形面积计算。...小结 学习了OpenGL ES支持图元类型 了解了如何用常规非实例化实例化绘图调用高效绘制它们 在顶点上执行坐标转换方法 光栅化相关知识

    3.1K20

    OPengl、DirectX、OPenCV、OpenCL

    绘制顶点数组)   glDrawElements(按索引数组绘制顶点数组----两个数组)   glDrawRangeElements(按索引数组绘制顶点数组任意段) OpenGL四种矩阵堆栈...y\z\w) 多模型贴纹理:   需要同时控制glEnaleglDisable,保证纹理对其他绘制无影响 图片处理:   http://www.cnblogs.com/IamEasy_Man/...(推荐使用glut框架入门opengl):   1.立即模式绘图:glBegin、glvertex、glEnd(固定渲染管线)   2.顶点数组绘图:glDrawArrays   3.Display...)、glBendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)   GL_POINTS点、GL_LINES线、GL_TRIANGLES三角形、GL_QUADS四边形...,返回索引,glNewList|glEnd绘制,glCallList调用 字体绘制:   glGenlist生成数组,wglUseFontBitmaps绑定显示列表数组到DC(wglgetcurrentDC

    2.2K50

    OpenGL ES——导入.stl格式3D模型

    前言 在上一章中,我们使用OpenGL ES绘制了一个平平无奇三角形。那么如何绘制3D模型呢?其实,在计算机世界中,所有的3D模型都是由无数三角平面拼接而成。...通常我们使用.stl格式记录一个3D模型三角平面信息,根据.stl文件中记录三角平面信息,我们能够还原出一个完整3D模型。 因此,本文将介绍,如何从.stl解析出三角平面信息,并绘制出来。...在这一段解析中,我们不仅会获得三角形平面的顶点坐标法向量数组,我们还提供了计算最大半径,计算中心点等方法。...(3, GL10.GL_FLOAT, 0, model.getVertBuffer()); // 绘制三角形 gl.glDrawArrays(GL10.GL_TRIANGLES...余下部分都是非常套路绘制三角形,不再重复分析。 以上,就是通过STL文件,导致三维模型数据并绘制全过程。 如有问题,欢迎指正。

    1.9K40

    基础渲染系列(十一)——透明度

    但是,当你使用这种材质选择一个四边形时,你会看到一个大致为圆形选择轮廓。 ? (在不透明四边形上展示选中轮廓) 如何得到选中轮廓? Unity 5.5引入了新选择轮廓显示方法。...调整DoRenderingMode也可以与此关键字一起使用。 ? 2.1 渲染设置 Fade 模式带有其自己渲染队列渲染类型。队列值为3000,这是透明对象默认值。...让我们在UI类中定义一个结构保存每种渲染类型设置,而不是使DoRenderingMode变得更加复杂。 ? 现在,我们可以为所有渲染类型创建一个静态设置数组。 ?...现在,我们支持带有两个关键字三种模式,分别用于基本pass附加pass。 ? 在Fade模式下,必须将当前片段颜色与已经绘制内容混合在一起。这种混合是由GPU在片段程序之外完成。...现在我们必须同时输出Fade透明模式alpha值。 ? 将我们材质切换为“透明”模式将再次使整个四边形可见。因为我们不再基于alpha调制新颜色,所以四边形将比使用不透明模式时显得更亮。

    3.7K20

    伪 3D 中贴图纹理透视矫正

    如果在 OpenGL 中不开启透视投影,使用简单四边形面片达到 3D 效果则需要对四边形面片进行旋转或者进行拉伸变形。但不经过透视投影矩阵计算,得到纹理渲染结果就会有缝隙裂痕情况。...下面将分两种情况讨论如何使用透视矫正来解决缝隙裂痕情况。 示例: 1....这样就找到了投影面上一个点所对应纹理坐标的正确值了。 通过上述计算可知,为了解决由于线性插值错误导致透视错误问题,只要三维空间模型带有必要 z 轴参数就可以完成在屏幕空间正确插值。 1....在 fragment shader 中,获取对应像素时,使用经过线性插值坐标点,并且除以 1/z,获取正确 uv 坐标,((u/z)/(1/z), (v/z)/(1/z))  通常来说,现代渲染器都自动完成了这样步骤...z 轴比例关系就可以在不开启透视投影情况下,正确使用透视矫正方法解决贴图纹理透视映射问题。

    2.1K30
    领券