我正在尝试制作一个使用 NDK 和 JNI 在 Android Studio 中绘制图像的应用程序,以使用 OpenGL ES 调用 C++ 代码。我已经阅读了如何在 OpenGL 中执行此操作的教程:https : //learnopengl.com/#!Getting-started/Textures,它使用 GLSL 330 核心。但是,Android 模拟器不支持 OpenGL ES 3.0(此链接中的注意事项:https : //developer.android.com/ndk/guides/stable_apis.html)。
因此,我必须使用 GLSL ES #version 100 ,它不支持下面着色器中的“布局”、“输入”和“输出”。我应该如何编辑它们以便它们可以在 #version 100 中运行,如果我编辑它们,源代码是否有任何变化?感谢您的关注和帮助。
更新:搜索后,我发现我可以使用 glGetAttributeLocation 来获取顶点着色器中变量的位置,而不是使用 layout(location=0)。但是,GLSL ES #version 100 中没有 VAO,所以我仍然无法弄清楚它在没有 VAO 的情况下是如何工作的。
我的顶点着色器:
#version 330 core
layout (location = 0) in vec3 position;
layout (location = 1) in vec3 color;
layout (location = 2) in vec2 texCoord;
out vec3 ourColor;
out vec2 …Run Code Online (Sandbox Code Playgroud) 这里我有一个 manifest:index.m3u8和 12 个段。我的问题是 VLC 播放器只播放manifest. 这是我的清单:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:18
#EXTINF:12.960,
sample-0.ts
#EXTINF:10.640,
sample-1.ts
#EXTINF:18.440,
sample-2.ts
#EXTINF:10.000,
sample-3.ts
#EXTINF:12.920,
sample-4.ts
#EXTINF:10.800,
sample-5.ts
#EXTINF:13.400,
sample-6.ts
#EXTINF:12.240,
sample-7.ts
#EXTINF:11.720,
sample-8.ts
#EXTINF:15.320,
sample-9.ts
#EXTINF:13.200,
sample-10.ts
#EXTINF:10.480,
sample-11.ts
#EXTINF:11.800,
sample-12.ts
Run Code Online (Sandbox Code Playgroud)
使用此清单,VLC 从 sample-8.ts 播放。我试图拉出一些片段,离开 sample-0.ts -> sample-7.ts,然后 VLC 从 sample-3.ts 播放。我的清单有什么问题?非常感激你的帮助。