标签: opengl-es

OpenGL ES,OpenFrameworks,Cinder和IOS创意开发

我正处于一个艰难的选择中.我想学习一种语言,可以帮助我创建具有强大的艺术/创意/图形组件的应用程序,并将其用于我的客户的商业项目.

我的第一选择是OpenGL ES,我认为它是"标准"的方式.但是,与此同时,我发现了这个网站:http://www.creativeapplications.net/我在其中发现了许多很酷的ios应用程序,对于大多数使用OpenFrameworsCinder构建的应用程序.

我的问题是:为什么选择这个2"包装"而不是OpenGL?我需要了解利弊.

我不确定使用这些框架我可以以简单(和标准)的方式混合(对于OpenGL)UIKit/Cocoa和Graphics.目前我仍然更喜欢OpenGL,因为我知道这是苹果建议的方式(我的意思是......由Apple提出),我确信我也可以为我的客户利用它.虽然我不确定使用OF和Cinder我可以毫不费力地完全管理UIKit和Cocoa.

iphone opengl-es openframeworks ios cinder

18
推荐指数
2
解决办法
6608
查看次数

我可以在Android NDK上使用glu

我似乎无法在我的Android NDK项目中包含glu.h.

我正在尝试将现有的C++代码移植到NDK,它在一些地方使用glu(特别是gluErrorString).

OpenGLES没有胶水吗?

我有可以使用的端口吗?

如果不是,我可以删除对类似gluPerspective等事情的调用,但我该怎么办gluErrorString

android opengl-es android-ndk glu

18
推荐指数
1
解决办法
7138
查看次数

Android系统.如何在Surface上播放视频(OpenGL)

需要帮助

  1. 如何Surface(OpenGL)在Android中播放视频?我试着在播放视频mySurfaceView extends SurfaceView的帮助方法setSurface()MediaPlayer.

    SurfaceTexture mTexture = new SurfaceTexture(texture_id);
    Surface mSurface = new Surface(mTexture);
    MediaPlayer mp = new MediaPlayer();
    mp.setSurface(mSurface);
    
    Run Code Online (Sandbox Code Playgroud)

我只播放音频 - 不播放视频.

  1. 如何获取视频缓冲区OpenGL
  2. 如何播放视频GLTexture

video android opengl-es

18
推荐指数
2
解决办法
2万
查看次数

在ios中将图像转换为卡通

在此输入图像描述 在ios中是否有可用于将图像转换为卡通图像的过滤器,如上图所示?

xcode image opengl-es image-processing ios

18
推荐指数
1
解决办法
2万
查看次数

在Win/Linux/MacOSX/Android/IOS上寻找用于跨平台开发的OpenGL ES框架

我必须开发一个可在Windows,Linux,MacOSX,Android和IOS上运行的跨平台多媒体应用程序.此应用程序必须能够播放音频/视频内容,显示照片和图形,并可能显示简单的2D动画.经过大量的搜索,似乎问题的"最便携的方法"是C++用作语言和OpenGL ES绘图API,因为几乎任何一对设备/操作系统都支持它们,性能水平会很好并且视觉外观应该在每个(一组)设备上几乎相同.

显然,我知道我必须调整应用程序的外观,以便在具有不同显示尺寸和分辨率的不同设备上"缩放".我也知道,对于这种不同架构上的任何代码要求完全相同的行为是不现实的.我只想最小化编写的代码(例如,首先在C++中重写一个接口,然后在Java中必须避免).

我不是OpenGL ES编程的专家,但是看一些样本,似乎我需要一个框架来制作一些现成的小部件(菜单,按钮,文本框).我宁愿不重新发明轮子.

这是一个低预算项目,所以我需要一个完全免费且开源的框架.当重要的东西丢失或行为不端时,后一个要求也允许自由添加/修改框架的API.我不是要求多用途框架(例如Qt),能够处理输入,网络,存储等,只是因为我强烈怀疑我提到的平台不存在这样的框架.我只想要一种OpenGL包装器能够抽象出它的许多低级细节,但也提供了一些像Qt那样的UI小部件.我将分别处理输入,网络,存储,传感器,可能使用其他跨平台开源库,如此处所示.

我在Stackoverflow和Gamedev上已经阅读了很多类似的问题,我听说过很多框架(Unity,Corona SDK,LÖVE,LibGDX,Ogre,Cocos2D-x),主要是为游戏开发而创建的.例如,Ogre和Cocos2D-x似乎符合我的一些要求,但如果我决定使用其中一个,我将必须编写几乎所有的UI元素(没有这么大的负担,有人可能会争辩).

几点评论:

  • 应用程序是2D,因此OpenGL可能看起来有点过分.但是,选择OpenGL ES是因为它具有非常好的可移植性和高性能水平,即使在旧硬件上也是如此.
  • 我基本上是一个Linux C++开发人员,所以我不希望切换到HTML5(仍然太年轻)或.NET/Mono(效率较低)而没有显着的优势.而且,我无法在短时间内掌握这些语言.
  • 我对本文中的故事印象深刻.我相信这可能是正确的方法:开源工具和适合项目需求的库的混合.但我仍然缺少最重要的部分:图形框架.
  • 写这个问题,我发现了这个令人沮丧的答案.我希望我的要求不会产生空集.我真的不能affort保持ñ在不同的UI ñ不同的平台.我真的需要一些与平台无关的东西.

任何帮助或建议将不胜感激.

c++ android cross-platform opengl-es ios

18
推荐指数
1
解决办法
9570
查看次数

OpenGLES 2中的文本/字体渲染(iOS - CoreText?) - 选项和最佳实践?

关于OpenGL字体渲染有很多问题,其中许多问题都是由纹理图集(快速但错误)或字符串纹理(仅限固定文本)所满足.

然而,这些方法很差,似乎已经过时了(使用着色器更好/更快地做到这一点怎么样?).对于OpenGL 4.1,有一个很好的问题,看看"你今天应该使用什么?":

从版本4.1开始,OpenGL中的文本渲染技术是什么?

那么,今天我们应该在iOS GL ES 2上使用什么?

我很失望,似乎没有开源(甚至是商业解决方案).我知道有很多团队把它搞砸了,花了几周的时间重新发明这个轮子,逐渐学习如何克服和空间等(呃) - 但必须有一个比重写整个"字体"更好的方法从头开始?


据我所知,这有两个部分:

  1. 我们如何使用字体渲染文字?
  2. 我们如何显示输出?

对于1(如何渲染),Apple提供了许多方法来获得"正确的"渲染输出 - 但"简单"的方法不支持OpenGL(也许其他一些方式 - 例如是否有一种简单的方法来映射CoreText输出到OpenGL?).

对于2(如何显示),我们有着色器,我们有VBO,我们有字形纹理,我们有查找纹理,以及其他tecniques(例如上面链接的OpenGL 4.1内容?)

以下是我所知道的两种常见的OpenGL方法:

  1. 纹理图集(渲染所有字形一次,然后从共享纹理渲染每个字符1 x纹理四边形)
    1. 这是错误的,除非你使用20世纪80年代的"位图字体"(即便如此:纹理图集需要比看似更多的工作,如果你需要它更正确的非平凡字体)
    2. (字体不是"字形的集合",有大量的定位,布局,包装,间距,字距,样式,着色,加权等.纹理图集失败)
  2. 固定字符串(使用任何Apple类正确渲染,然后截取背景图像数据,并上传为纹理)
    1. 从人的角度来说,这很快.在帧渲染中,这非常非常慢.如果您使用大量更改文本执行此操作,则帧速率会在整个范围内显示
    2. 从技术上讲,它大多是正确的(不完全是:你以这种方式丢失了一些信息)但效率极低

我也看过,但听到了好的和坏的事情:

  1. Imagination/PowerVR"Print3D"(链接坏了)(来自制造GPU的人!但是他们的网站移动/删除了文本渲染页面)
  2. FreeType(需要预处理,解释,大量代码,额外的库?)
  3. ...和/或FTGL http://sourceforge.net/projects/ftgl/(谣言:慢?错误?很长时间没有更新?)
  4. 字体存储http://digestingduck.blogspot.co.uk/2009/08/font-stash.html(高质量,但非常慢?)
  5. 1.

在Apple自己的OS /标准库中,我知道几种文本呈现源.注意:我已经在2D渲染项目中详细使用了大部分这些,我关于它们输出不同渲染的陈述是基于直接经验

  1. CoreGraphics与NSString
    1. 最简单的:渲染"进入CGRect"
    2. 似乎是人们推荐的"固定字符串"方法的稍微快一点的版本(即使你期望它大致相同)
  2. UILabel和UITextArea用纯文本
    1. NB:他们不一样!他们如何渲染smae文本略有不同
  3. NSAttributedString,呈现给上面的一个
    1. 再次:渲染方式不同(我所知道的差异相当微妙并被归类为"错误",关于此的各种SO问题)
  4. CATextLayer
    1. iOS字体和旧C渲染之间的混合体.使用"不完全"免费桥接的CFFont/UIFont,它揭示了一些更多的渲染差异/陌生感
  5. CoreText
    1. ......最终的解决方案?但是它自己的野兽......

fonts core-animation opengl-es core-text ios

18
推荐指数
1
解决办法
6876
查看次数

片段着色器和着色纹理

我试图通过片段着色器调整纹理颜色.我的片段着色器非常简单:

uniform sampler2D sampler;

void main() {
  vec4 tex = texture2D ( sampler, uvVarying );
  gl_FragColor = vec4(tex.r, tex.g, tex.b, tex.a);
}
Run Code Online (Sandbox Code Playgroud)

这按照预期绘制了我的狗纹理: 正常的狗

如果我然后将着色器更改为

  gl_FragColor = vec4(tex.r, tex.g, tex.b, 1.0);
Run Code Online (Sandbox Code Playgroud)

结果是我的预期,透明度信息丢失:

没有透明度

但如果我把它设置为:

  gl_FragColor = vec4(tex.r, tex.g, tex.b, 0.0);
Run Code Online (Sandbox Code Playgroud)

我期待它完全消失,但我得到:

绿狗

到底是怎么回事??

对于我原来的问题:我想在我的纹理中添加一点红色:

  gl_FragColor = vec4(tex.r + 0.5, tex.g, tex.b, tex.a);
Run Code Online (Sandbox Code Playgroud)

现在,我希望它与原始纹理具有相同的透明度信息,但我得到了这个:

红色的狗

我在这里想念的是什么 纹理使用引擎的默认混合src = GL_ONE, dst = GL_ONE_MINUS_SRC_ALPHA.

opengl opengl-es glsl fragment-shader opengl-es-2.0

18
推荐指数
1
解决办法
2万
查看次数

如何在android中实现Drag Distortion Image过滤器?

我正在研究自定义图像过滤器项目.我遇到了一个具有挑战性的任务,我应该应用扭曲过滤器,这可以在Funny face effect app中看到.我想开发Funny Face Effects中提供的前3个滤镜.

所以为了实现这样的效果,我开始使用GPUImageView GPUImage,在这里,它使用搜索条来扭曲来自中心的图像.我已经实现了Bulge失真.但有什么方法可以实现拖动过滤器,我可以通过拖动手势扭曲我的图像?

我们试图搜索除GPUImage之外的任何其他第三方类.但我们找不到有用的东西.

我们的查询如下: -

1)是否可以使用拖动手势应用拖动过滤器?(任何代码片段或参考可感知)

2)除GPU之外的任何其他第三方类可以帮助我们获得上述结果.

提前致谢!

在此输入图像描述

android opengl-es distortion android-gpuimageview

18
推荐指数
1
解决办法
1253
查看次数

gpus_ReturnGuiltyForHardwareRestart [EAGLContext presentRenderbuffer]中的崩溃

EAGLContext presentRenderbuffer在iOS 11上遇到了很多崩溃,但仅限iPhone 6/6 +及更早版本.

根据这篇文章,我认为我们已经通过重写所有不使用VBO/VAO来排除与VBO相关的问题,但崩溃并没有解决.

还有一些关于此问题的其他问题,但没有解决方案 - 还有其他人看到过这次崩溃的上升并且能够解决它吗?


TL; DR:

这是我们目前所知道的:

  • 崩溃特定于iOS11,iPhone 5S/6/6 +.它不会发生在6S及以上.
  • OpenGL堆栈的核心返回gpus_ReturnGuiltyForHardwareRestart
  • 当我们尝试从CAEAGLLayer调用[EAGLContext presentRenderbuffer]时会发生这种情况
  • 我们没有复制品.

到目前为止我们尝试了什么:

  • 删除渲染堆栈中对VBO/VAO的任何引用.没有帮助.
  • 我们尝试过使用各种绘图场景(​​旋转,调整大小,背景/前景)进行重新编辑.没运气.
  • 据我们所知,iPhone 6系列和iPhone 6S系列之间的应用逻辑没有任何具体内容.

一些线索(可能相关但不一定):

  • 我们知道,当主线程调用presentRenderBuffer,并且主线程上同时发生了一些CATransaction时,崩溃率会上升.
  • 当在主线程(以及整个绘图管道)上调用presentRenderBuffer时,崩溃率会略微下降但不会大幅下降.
  • 当图层离开屏幕和/或离开视图层次结构时,会发生大量的崩溃(约20%)崩溃.

这是堆栈跟踪:

  libGPUSupportMercury.dylib gpus_ReturnGuiltyForHardwareRestart

1 AGXGLDriver gldUpdateDispatch
2 libGPUSupportMercury.dylib gpusSubmitDataBuffers
3 AGXGLDriver gldUpdateDispatch
4 GLEngine gliPresentViewES_Exec
5 OpenGLES -[EAGLContext presentRenderbuffer:]
Run Code Online (Sandbox Code Playgroud)

iphone graphics opengl-es objective-c ios

18
推荐指数
1
解决办法
1154
查看次数

如何使用OpenGL-ES 2在Android中加载和显示.obj文件

我正在尝试将.obj文件加载到我的Android应用程序中并使用OpenGL 2显示它.

你可以在这里找到这个文件:编辑:我删除了文件,你可以使用任何包含下面提到的值的.obj文件进行测试.

stackoverflow上有很多类似的问题,但我没有找到一个不需要一些大型库的简单解决方案.

该文件仅包含以下值类型:

  • G
  • v
  • VT
  • VN
  • F

我试过libgdx,它运行正常,但它对我需要的东西有点过分.

我在没有LWJGL的情况下尝试了oObjLoader https://github.com/seanrowens/oObjLoader.解析似乎有效,但如何在简单场景中显示值?

下一步是将图像作为纹理附加到对象.但是现在我很乐意按原样显示文件.

我对不同的解决方案持开放态度,例如预转换文件,因为它只会在应用程序中出现.

谢谢!

状态更新 基本加载和显示现在可以正常工作,如我自己的答案所示.

android opengl-es opengl-es-2.0

17
推荐指数
2
解决办法
8870
查看次数