从文件问题加载纹理 Android NDK 和 OpenGL
Load Texture From File problem Android NDK and OpenGL
我正在尝试通过OpenGL加载图像,并在android ndk上stbi_load。问题是它正在生成无效纹理(等于零(。
LoadTextureFromFile("/storage/emulated/0/Download/BPV/mic_close.jpg", &my_image_texture, &my_image_width, &my_image_height);
bool CGUI::LoadTextureFromFile(const char* filename, GLuint* out_texture, int* out_width, int* out_height)
{
// Load from file
int image_width = 0;
int image_height = 0;
unsigned char* image_data = stbi_load(filename, &image_width, &image_height, NULL, 4);
if (image_data == NULL)
return false;
// Create a OpenGL texture identifier
GLuint image_texture;
glGenTextures(1, &image_texture);
glBindTexture(GL_TEXTURE_2D, image_texture);
// Setup filtering parameters for display
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// Upload pixels into texture
glPixelStorei(0x0CF2, 0);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image_width, image_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, image_data);
stbi_image_free(image_data);
*out_texture = image_texture; // Receive zero
*out_width = image_width;
*out_height = image_height;
return true;
}
我使用 libGLESv2
GLuint image_texture;
glGenTextures(1, &image_texture);
...
*out_texture = image_texture; // Receive zero
glGenTextures()
只是分配新对象,实际上永远不会失败,除非在没有活动 OpenGL 上下文的情况下调用。
在 Android 平台上,OpenGL 渲染通常在专用工作线程(不同于 GUI 线程(中完成,因此很可能您从错误的线程或在 OpenGL 上下文初始化之前调用该方法(无法从给定的代码示例中推断出来(。
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 如何使用ndk-build.cmd构建Android.so文件
- Android NDK传感器向事件队列报告奇怪的间隔
- 了解 GLM- openGL 中的相机转换
- 从文件问题加载纹理 Android NDK 和 OpenGL
- 使用 NDK for Android 编写 OpenGL 代码
- 如何将这些OpenGL着色器转换为Android NDK的GLES3的OpenGL ES着色器
- PNG Texture OpenGL es 2.0 Android NDK
- OpenGL中仅限Android的游戏:C++(NDK)与Java(Dalvik)的性能
- 如何通过 C++/NDK 访问 OpenGL ES 2(如果不支持EGL_NATIVE_RENDERABLE)
- Android NDK C++ openGL ES 2 上下文提供糟糕的显示
- 在 Android NDK 上创建映射/直接 OpenGL ES 纹理
- 在Android NDK上通过JNI从OpenGL ES Framebuffer创建位图图像
- Android NDK SDL2 OpenGL ES 2 影子映射(定向)- 是否可能
- Android NDK中的OpenGL ES 2.0:没有绘制任何内容
- 在 OpenGL-ES 中使用 Android NDK 上的C++创建具有"glTexImage2D"的纹理会导致问题
- Android:使用NDK进行OpenGL渲染
- Android NDK OpenGL ES 2上下文初始化
- Android NDK Native Activity OpenGL ES 1.1 三角形不会显示
- Android, OpenGL ES 2.0, ndk - glCheckFramebufferStatus retur