有没有人知道一种有效的方式来加载纹理到OpenGL ES中,其尺寸不是2的幂数?我是OpenGL的新手,我正在为iPhone开发2D游戏,并且我已经制作了很多纹理。将我的所有纹理重新调整到2的幂是非常繁琐的工作。在OpenGL ES中加载非幂次的图像iPhone
回答
由于性能的原因,最好将所有的精灵都放到地图集中。地图集是一个很大的纹理,包含你所有的精灵。有一些工具可以使这个过程自动化。例如TexturePacker:http://www.texturepacker.com/
根据您使用的是哪种技术,您可能必须解析纹理打包器的输出以获取UV偏移。
btw .:性能损失的原因是因为iPhone上的纹理开关非常昂贵。您希望尽可能少地使用纹理切换。 有一点背景可以在这里找到:http://www.imgtec.com/powervr/insider/docs/PowerVR%20Series5%20Graphics.SGX%20architecture%20guide%20for%20developers.1.0.8.External.pdf –
非常感谢你。这帮了很多。 – Marc
如果您使用的是线性混合,这种方法会导致精灵与它们的相邻像素_在atlas_中混合,而不是像CLAMP那样,这可能是您想要的精灵。当你开始缩小时需要记住一些事情。 –
unsigned int NextPOT(unsigned int x)
{
x = x - 1;
x = x | (x >> 1);
x = x | (x >> 2);
x = x | (x >> 4);
x = x | (x >> 8);
x = x | (x >>16);
return x + 1;
}
unsigned int width = CGImageGetWidth(image.CGImage);
unsigned int height = CGImageGetHeight(image.CGImage);
unsigned int Width_POT = NextPOT(width);
unsigned int Height_POT = NextPOT(height);
CGRect Rect = CGRectMake(0,0,width, height);
CGSize size = CGSizeMake(Width_POT, Height_POT);
UIGraphicsBeginImageContext(size);
[image drawInRect:Rect];
UIImage* result = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
图像是源图像大小,其是2非POW,结果是可以传递到OpenGL的图像
- 1. OpenGL ES 2 - 加载和显示图像
- 2. 从iPhone中的C++代码将图像载入到OpenGL ES中
- 3. 如何在用于iphone的OpenGL ES中加载和显示图像
- 4. iPhone的OpenGL-ES:在OpenGL UISwipeGestureRecognizer
- 5. 异步纹理加载iPhone OpenGL ES 2
- 6. 在openGL中加载图像
- 7. 在iPhone上的OpenGL ES中,如何滚动两个图像?
- 8. 在Opengl中实现非2次幂的纹理
- 9. OpenGL ES For iPhone
- 10. iPhone OpenGL ES
- 11. 在iPhone上渲染到非二次幂的纹理
- 12. OpenGL ES将保存的图像加载回到renderbuffer
- 13. 在OpenGL ES中隐藏图像部分
- 14. 如何在openGL ES中移动图像?
- 15. opengl es 2.0纹理加载
- 16. iPhone OpenGL ES Texture2D Masking
- 17. Fullscreen texture iPhone OpenGL ES
- 18. OpenGL ES iPhone纹理
- 19. Iphone opengl es - glu,glPushName
- 20. Android OpenGL ES扭曲图像
- 21. 橡皮擦在OpenGL ES iphone
- 22. OpenGL ES 2.0中的图像和蒙版
- 23. 在iPhone的OpenGL ES中纹理球体
- 24. iPhone OpenGL ES 2.0 - 像素完美纹理
- 25. 加载SDL图像的OpenGL图像
- 26. 在iPhone上使用OpenGL ES调用图像:可能吗?
- 27. OpenGL ES中的摄像头
- 28. 如何在opengl中加载图像
- 29. 如何更改ios中用于OpenGL的图像格式? (将图像加载到OpenGL ES 2.0)
- 30. 在后台加载OpenGl视图。 iPhone
参见http://stackoverflow.com/questions/3014352/fullscreen-texture-iphone -opengl-es –
我很确定你的意思是两个人的权力,对于那个迂腐的人很抱歉。 –
这没有问题。谢谢你指出。 – Marc