OpenGL 点精灵可以在 Android 中使用吗?

2024-03-11

我正在 Droid 版本 2.1-update1 上进行开发。我支持的 GL 扩展包括 GL_OES_point_sprite 和 GL_OES_point_size_array。

我无法获取要渲染的点精灵。下面的代码在 glTexEnvi 调用时从 GLWrapperBase 抛出 UnsupportedOperationException。如果我禁用纹理并注释掉所有 glTexEnvi,它会在 glPointSizePointerOES() 处进一步抛出相同的异常。

Android 是否正确支持点精灵?有人让他们工作了吗?或者我下面的代码有问题吗?

// Note that gl is cast to GL11
gl.glEnable(GL11.GL_TEXTURE_2D);
gl.glEnable(GL11.GL_BLEND);
gl.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
gl.glDepthMask(false);
gl.glEnable(GL11.GL_POINT_SPRITE_OES);
gl.glTexEnvi( GL11.GL_POINT_SPRITE_OES, GL11.GL_COORD_REPLACE_OES, GL11.GL_TRUE );  
gl.glEnableClientState(GL11.GL_VERTEX_ARRAY);
gl.glVertexPointer(2, GL11.GL_SHORT, 0, .vertBuffer);
gl.glEnableClientState(GL11.GL_POINT_SIZE_ARRAY_OES);
gl.glPointSizePointerOES(GL11.GL_FLOAT, 0, pointSizeBuffer);

Thanks


我得到了这个工作,这是我的绘图功能

初始化一切

    gl.glEnable(GL10.GL_TEXTURE);
    TextureManager.activateTexture(gl, R.drawable.water1); //Don't look for this, it's not public api, just looks upd texture id for android resource if loaded, and then activates it. it's the gl.glBindTexture() call replacement
    gl.glEnable(GL11.GL_POINT_SPRITE_OES);
    gl.glEnableClientState(GL11.GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES);
    gl.glEnableClientState(GL11.GL_POINT_SIZE_ARRAY_OES);       
    gl.glEnableClientState(GL11.GL_POINT_SPRITE_OES);
    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);

设置纹理环境以使用点精灵

    gl.glTexEnvf(GL11.GL_POINT_SPRITE_OES, GL11.GL_COORD_REPLACE_OES, GL11.GL_TRUE);

设置指向数据的指针(第一个数组是 2d 布局 [x,y,x2,y2,...] 第二个是 1d [s1,s2,..])

    gl.glVertexPointer(2,GL11.GL_FLOAT,0,PosData);              
    ((GL11)(gl)).glPointSizePointerOES(GL10.GL_FLOAT, 0, SizeData);

Draw

    gl.glDrawArrays(GL10.GL_POINTS,0,MAX);

禁用东西

    gl.glDisableClientState(GL11.GL_VERTEX_ARRAY);
    gl.glDisableClientState(GL11.GL_POINT_SIZE_ARRAY_OES);
    gl.glDisableClientState(GL11.GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES);
    gl.glDisableClientState(GL11.GL_POINT_SIZE_ARRAY_OES);      
    gl.glDisable(GL10.GL_TEXTURE);

在我的初始化程序中,我只设置了投影并启用了 GL_BLEND 进行混合。我认为如果你想给精灵上色,你需要 GL_COLOR_MATERIAL。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenGL 点精灵可以在 Android 中使用吗? 的相关文章

随机推荐

  • 通过 Selenium Grid 运行 Selenium IDE 测试

    首先我应该说 我感到遗憾和痛苦noob 但我正在努力改变这一点 我不懂任何编程语言 但通过做足够的研究来完成我需要完成的任何工作 从而成功地 让事情发生 不管怎样 我一直在使用 Selenium IDE 创建 Selenium 测试 但在通
  • MySQL PHPMyAdmin 错误 #1062 - 键“PRIMARY”重复条目“0”

    现在我想添加一个主键id列 但它抛出错误 1062 密钥 PRIMARY 重复输入 0 我已经尝试过这个 向现有表添加主键 https stackoverflow com questions 11794659 add primary key
  • 选择用于实现分布式消息传递算法的编程语言

    基本上 我想实现以下算法并分析使用这些算法构建的系统在不同条件下的行为 八卦协议 多个paxos 一致的散列 我的兴趣在于这些算法 我基本上是在寻找一种编程语言 可以让我快速编写这些算法并深入理解这些算法 我应该选择哪种语言 Java Sc
  • 如何签署由第 3 方提供的发布 iphone 二进制文件?

    我收到了一家外包公司为我工作的公司开发的 iPhone 应用程序 我无权访问源代码 只能访问已编译的二进制文件 我希望能够使用我们的证书 配置信息等对其进行签名 以便我可以将其提交到应用程序商店 我该怎么做呢 我知道的存在codesign但
  • 如何切换到“更多”视图中的选项卡栏项目?

    我正在用 Objective C 为 Iphone Ipad 编写一个应用程序 我在标签栏的 更多 中有一些项目 我想切换到其中一种视图 我该怎么做 通常我会使用 selectedIndex 但它在 更多 选项卡上不起作用 要从更多屏幕选择
  • 使用 for 迭代 python 列表时如何指定类型/类名

    我知道 python 是动态类型语言 但想知道这是否可能 假设我有一个名为 people 的类 Person 的列表 people people append Person james for p in people p name p na
  • PHP(或其他):处理“不可能发生”的异常的策略

    考虑以下代码 class C throws InvalidArgumentException function classCreateInstance class if is string class throw new InvalidAr
  • mysql查询中的正则表达式

    我有 mysql 表值 例如 1 2 1 2 3 1 4 5 1 4 5 12 15 15 45 75 1 5 15 25 35 55 55 65 75 我想选择哪些行的编号为 5 而不是 15 25 或 35 我尝试过使用 LIKE 查询
  • 材质按钮 切换组单选

    我怎样才能强制材质按钮切换组表现得像 RadioGroup 一样 总是至少有一个选定的项目 环境setSingleSelection true 如果您单击组中的按钮两次 还可以增加不选择任何内容的可能性 这是我的代码
  • 暂时禁用 Lollipop CheckBox 上的动画

    我有一个 ListView 其中包含复选框的行 此 ListView 附加了过滤行为 它通过设置新数据来回收这些行 通过一个简单的setData 方法 随着过滤条件的变化 发生这种情况时 任何具有以下属性的回收行checked状态更改将更新
  • Hibernate 4 和 joda-time

    他们婚姻幸福吗 我使用的是最新版本的 hibernate 4 和 1 3 版本joda 时间休眠支持 http www joda org joda time hibernate 我也认为这是当前的最新版本 使用注释时 一切似乎都工作正常 按
  • 使用 Rspec 测试“创建后”

    我正在尝试使用 Rspec 测试 创建后 操作 代码如下 def valid attributes zone gt Flymgr Zone new countries gt Flymgr ZoneCountry first name gt
  • 无需正则表达式即可简单搜索和替换

    我有一个包含各种通配符的文件 我希望能够从 Bash shell 脚本中替换它 我有以下内容 该内容非常有效 直到其中一个变量包含正则表达式特有的字符 VERSION 1 0 perl i pe s VERSION VERSION g tx
  • 经典asp中的vbscript语法

    我有一个 vbscript 我想在其中运行一种asp 我在运行脚本时遇到问题 所以我想我需要一些帮助来确保 asp 知道它是 vvbscript 或其他东西 最后一个脚本是我运行时遇到问题的脚本 这是我所拥有的
  • 当以字符串形式给出方法名称时,如何调用 Java 方法?

    如果我有两个变量 Object obj String methodName getName 在不知道班级的情况下obj 我怎样才能调用由methodName on it 被调用的方法没有参数 并且有一个String返回值 它是Java be
  • 基于整数而不是字符串按升序对数组进行排序

    我有一个具有以下结构的数组 myArray
  • 如何使用 Koala gem 获取 Facebook 用户的照片?

    我正在尝试使用以下方法获取 Facebook 用户朋友的照片 他们的 facebook id 但使用以下代码返回 nil 图片网址 我使用的代码如下 picture url user get picture 1000000111 其中 us
  • TDictionary 保存到文件

    我有很多文件 大约 160 000 个 我需要有关文件中各个单词的位置的信息 全文 所以我这样使用字典 WordDict TDictionary
  • 在 MVC 核心中搭建控制器时未找到主键

    当尝试搭建控制器时 出现以下错误 运行选定的代码生成器时出错 实体 类型 Company Models Office 需要在以下位置定义主键 Microsoft VisualStudio Web CodeGeneration ActionI
  • OpenGL 点精灵可以在 Android 中使用吗?

    我正在 Droid 版本 2 1 update1 上进行开发 我支持的 GL 扩展包括 GL OES point sprite 和 GL OES point size array 我无法获取要渲染的点精灵 下面的代码在 glTexEnvi