草庐IT

c++ - OpenGL 透明效果在 Meego 上显示的很糟糕

我们通过OpenGL在一个场景中创建了几个半透明的3D立方体,在Windows7和Fedora15上显示效果很好,但在Meego系统上就变得很糟糕。这是它在我的Fedora15系统上的样子:这就是它在Meego上的样子。线条的颜色已经被我们改变了,否则你看到的立方体会更可怜:效果是通过普通的glColor4f函数实现的,通过设置alpha值使其透明。怎么会这样?freeglut和openglut都在Meego系统上试用过,都没有更好的显示。我什至尝试使用像irrlicht这样的引擎来实现它,但是当beginScene方法的zBuffer参数设置为false时,屏幕上除了黑色什么都没有(

c++ - 连续内存、OpenGL,以及如何包装顶点?

因此,OpenGL编程的一个关键要求是以保证连续内存的方式存储顶点。我最近读了几本专业图形程序员写的不错的书,他们都使用了相同想法的变体:将顶点打包成一个structof3floats,x,y,z,然后将多个顶点打包到这些structs的c风格数组或std::vector中。并且有效。但是我在这个站点上看到它一次又一次地说struct不能保证内存连续性。有人说,如果您的结构包含所有float,那么它们可能是连续的,但不能保证。数组和std::vector确实保证了这一点,但如果您放入数组或vector中的内容不连续,那将无关紧要。对于生产代码,我希望“可能”不会削减它。因此,尽管这两本

c++ - Mac 上的 OpenGL GLSL 着色器无法编译

当我尝试在Mac上为我的应用程序编译GLSL着色器时,它因着色器版本冲突错误而失败:Errorcompilingvertexshader:ERROR:0:1:'':version'130'isnotsupportedErrorcompilingshader:ERROR:0:1:'':version'130'isnotsupported着色器是这样的:顶点着色器:#version130invec2in_vPos;invec2in_vTexCoord;outvec2s_vTexCoord;voidmain(){gl_Position=vec4(in_vPos,0,1);s_vTexCoor

c++ - 如何使用 openGL 显示点云

我正在尝试使用OpenGL显示点云。我遵循了一些教程并成功显示了一些几何模式,但是当我尝试显示从csv文件读取的点云时,它不起作用。文件读取效果很好。包括#include#include#include#include#include#include#include#include#include#include#include#include#include#include"Point.cpp"#include"drawing.cpp"usingnamespacestd;声明voiddraw(vectorv);intpointsNBR=200;char*theFileName;主要方

ios - iPhone 上的 OpenGL ES 可能存在 Retina 问题?

这可能链接到anotherunsolvedmystery我的。我正在iPhone上使用真实设备和模拟器绘制Orthographic2d。我正在尝试根据它们与我传入的“A”像素空间中的任意点的距离为我的像素着色给定颜色(硬代码)。我在Retina960x640分辨率下做所有事情。我计算从A到gl_FragCoord的距离,并根据2种颜色之间的跳跃来着色,“最大”距离为300像素。在模拟器上(带视网膜显示器)我需要为屏幕中点X提供一个“460”像素的中心点。Y我给160像素,我寻找“300”像素的距离......以获得同样的效果在设备上我需要960X的中心和150的距离来获得相同的结果(有

ios - OpenGL-ES:选择性混合

我正在使用GPUImage的角点检测器从相机捕获的帧中提取角点。我想在角坐标处渲染Spark。当我得到角坐标后,我将它传递给我的Spark生成器(非常类似于GPUImage的十字准线生成器):publicfuncrenderSparkles(_positions:[Position]){imageFramebuffer.activateFramebufferForRendering()imageFramebuffer.timingStyle=.stillImageglEnable(GLenum(GL_POINT_SPRITE_OES))sparklesShader.use()unifo

iphone - 关于通用 OpenGL ES 应用程序(iPhone 和 iPad)的建议?

我即将使用iOS4.2将基于iPhoneOpenGLES的应用程序转换为通用(iPhone+iPad)应用程序。你会给我什么建议?这样做有什么明显的缺陷吗? 最佳答案 确保获得屏幕尺寸的边界矩形,而不是对View大小或基于窗口坐标的任何内容进行硬编码。[[UIScreenmainScreen]边界];如果您的应用程序在iPhone3GS或更早版本(640x480)屏幕上不受填充限制(即硬件每秒只能获取这么多纹素并显示这么多片段),请认识到这一点。它很可能分别在iPad或iPhone4(1024x768或960x640)屏幕尺寸上受到

iphone - OpenGL ES Tiled Texture Mipmap 问题 - iPad/iPhone

我在使用OpenGLES的iPad上遇到了传统的tile/mipmap问题。基本上,如果您有一个大纹理(大于1kX1k),您可以将它分解成多个部分并将这些部分映射到单独的多边形上。您可以将纹理坐标固定在边缘上,这在大多数情况下都有效,但您会在边界上得到伪影。现在我知道你为什么会得到这个并且知道传统的解决方案是什么。也就是说,您在每个较小的纹理(比如6个像素)的外部制作了一个边框。你从小纹理采样到大纹理,所以你只使用像素内部的那些(比如256-2*6)。然后将有效像素涂抹到边界区域。最后,您将纹理坐标映射为仅使用那些有效的内部像素。工作正常。如果您此时不点头,请不要尝试回答。:-)无论如

iphone - 我应该使用哪种 OpenGL ES 纹理格式以在 iPad 上获得更好的动态范围?

我正在开发一些使用纹理贴图来存储几何图形的软件。使用GL_RGB作为内部格式会产生很多锯齿,我假设是因为默认情况下纹理被压缩到GL_RGB4。在台式机上我可以使用GL_RGB16或GL_RGB32F(等)来设置内部格式,但在OpenGLES2.0下似乎没有任何这些格式。在IOS下是否有可供我使用的替代方案或扩展? 最佳答案 根据Apple(和我自己的经验)GL_RGB和GL_UNSIGNED_BYTE使用8:8:8存储。要降低颜色精度,您需要指定一种GL_UNSIGNED_SHORT_5_6_5类型或将多个channel打包成一个短

ios - 与 OpenGL ES + CoreData 的并发

我有三个任务:获取任务。它从CoreData获取对象(大约2000个)并将NSManagedObjectIDs传递到主线程,在那里它们被转换回NSManagedObjects并存储在NSArray中。此任务的优先级最低。计算任务。此任务遍历这些对象并计算对象的一些值。这些值存储为NSManagedObject子类的临时属性。此任务是第二高优先级。OpenGLES绘图任务。这是根据计算任务的结果更新UI的绘图循环。此任务具有最高优先级,因为任何减速都会降低帧速率,并且在缩放或平移时非常明显。我的问题是创建一个设计模式,允许前两个任务完成它们的工作,同时仍然允许OpenGL任务以最大帧速率