c++ - 将 PNG 纹理导入内存而不是帧缓冲区 - 使用 C++ 和 OpenGL

标签 c++ memory opengl png textures

我正在为我正在开发的一个简单游戏研究一种可能的碰撞检测方法,但我现在被卡住了。

我正在尝试将纹理加载到内存中而不是加载到帧缓冲区中并使用坐标从中读取像素(特别是颜色)...我可以轻松读取缓冲区内容并获取坐标处像素的颜色但是我不知道如何在纹理上执行此操作,甚至可能吗?

任何帮助/指导/研究内容或可能的功能将不胜感激。

注意:我使用的是 OpenGL 2.0

最佳答案

OpenGL 不是图像处理库,也不是图像访问库。它是一个绘图 API,因此应该对其进行处理。使用 OpenGL 可以读回(整个)纹理(尽管性能不是很好)。在 OpenGL-ES 上,没有直接的方法来读取纹理数据。

您已经在常规缓冲区中拥有了整个纹理图像?很好,因为无论如何这就是您要操作的对象。读回单个像素的颜色是愚蠢的,因为它会因函数调用开销而阻塞 CPU。

关于c++ - 将 PNG 纹理导入内存而不是帧缓冲区 - 使用 C++ 和 OpenGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9665467/

相关文章:

c++ - 简单的 OpenGL 应用程序

c++ - 为 Visual Studio 2010 设置 OpenCV-2.3

database - 非常大的数据库,非常小的部分大部分是实时检索的

php - Doctrine findBy() 内存不足错误

java - 将 .3ds 模型导入 JMonkeyEngine 3

c++ - OpenGL XUbuntu 14.04 glShaderSource、glCompileShader、glCreateProgram 函数未声明

c++ - 浮点 NaN 取决于 C++ 中不相关的异常处理

c++ - nginx rtmp compile for windows error U1052 & rtmp-module-master/config not found

c++ - 多个指针取消引用与引用之间的性能差异

Linux 设备驱动程序 - 内存映射 I/O 示例讨论