Android 如何转换*.vert&;*。在C中从碎片到字符?
我正在用NDK编写一个OpenGL示例 main.c中的我的着色器代码: 我曾尝试进行转换(我还更改了main.c中创建着色器的方式),但失败: 我想通过在main.c中读取外部着色器文件来使用它们Android 如何转换*.vert&;*。在C中从碎片到字符?,android,c,opengl-es,android-ndk,Android,C,Opengl Es,Android Ndk,我正在用NDK编写一个OpenGL示例 main.c中的我的着色器代码: 我曾尝试进行转换(我还更改了main.c中创建着色器的方式),但失败: 我想通过在main.c中读取外部着色器文件来使用它们 如何转换它?您可以像加载任何其他文件一样进行转换: char * get_file_contents(char const* file_name) { FILE * file = fopen("vert.glsl", "r"); fseek(file, 0, SEEK_END);
如何转换它?您可以像加载任何其他文件一样进行转换:
char * get_file_contents(char const* file_name) {
FILE * file = fopen("vert.glsl", "r");
fseek(file, 0, SEEK_END);
size_t size = ftell(file);
rewind(file);
char * str = malloc(size);
fread(str, 1, size, file);
fclose(file);
return str;
}
int main() {
/*...*/
char const* vShaderStr = get_file_contents("vert.glsl");
char const* fShaderStr = get_file_contents("frag.glsl");
userData->programObject = esLoadProgram ( vShaderStr, fShaderStr );
free(vShaderStr);
free(fShaderStr);
/*...*/
}
我只在C++中编程,所以我不会尝试添加错误处理到这个代码。不过,这应该足够让您开始了。
您可以像加载任何其他文件一样:char * get_file_contents(char const* file_name) {
FILE * file = fopen("vert.glsl", "r");
fseek(file, 0, SEEK_END);
size_t size = ftell(file);
rewind(file);
char * str = malloc(size);
fread(str, 1, size, file);
fclose(file);
return str;
}
int main() {
/*...*/
char const* vShaderStr = get_file_contents("vert.glsl");
char const* fShaderStr = get_file_contents("frag.glsl");
userData->programObject = esLoadProgram ( vShaderStr, fShaderStr );
free(vShaderStr);
free(fShaderStr);
/*...*/
}
我只在C++中编程,所以我不会尝试添加错误处理到这个代码。不过,这应该足够让您开始了。
请在问题本身中发布一个最小的可复制代码示例。如果您使用的是Android,那么您使用的是opengl es,而不是opengl,您应该相应地标记您的问题。只需使用标准库从文件中读取数据并将其存储在字符串中即可。这与OpenGL无关,只是关于您对C标准库的熟悉程度。请在问题中给出一个最小的可复制代码示例。如果您使用的是Android,那么您使用的是opengl es,而不是opengl,您应该相应地标记您的问题。只需使用标准库从文件中读取数据并将其存储在字符串中即可。这与OpenGL无关,只是关于您对C标准库的熟悉程度。