无法加载用 CMake 嵌入的 TGA 图像?
Can't load TGA image embedded with CMake?
我试图通过添加以下内容将图像和着色器嵌入到单个 opengl 可执行文件中:
FUNCTION(ADD_RESOURCES out_var)
SET(result)
FOREACH(in_f ${ARGN})
FILE(RELATIVE_PATH src_f ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/${in_f})
SET(out_f "${PROJECT_BINARY_DIR}/${in_f}.o")
ADD_CUSTOM_COMMAND(OUTPUT ${out_f}
COMMAND ld -r -b binary -o ${out_f} ${src_f}
DEPENDS ${in_f}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMENT "Building object ${out_f}"
VERBATIM
)
LIST(APPEND result ${out_f})
ENDFOREACH()
SET(${out_var} "${result}" PARENT_SCOPE)
ENDFUNCTION()
ADD_RESOURCES(RES
shaders/test.vert
shaders/test.frag
misc/a.tga
)
extern const char _binary_shaders_test_vert_start, _binary_shaders_test_vert_end;
extern const char _binary_shaders_test_frag_start, _binary_shaders_test_frag_end;
extern const unsigned char _binary_misc_a_tga_start, _binary_misc_a_tga_end;
问题是加载的着色器运行良好,但无法加载 tga。查看日志后,我发现 &_binary_misc_a_tga_end
和 &_binary_misc_a_tga_start
确实存在,虽然这些地址的值都是 0.
说清楚一点,&_binary_misc_a_tga_end
和&_binary_misc_a_tga_start
就像那些shader对象,没什么奇怪的。从 _binary_misc_a_tga_end
到 _binary_misc_a_tga_start
的值都是 0,这很奇怪。
misc/a.tga.o确实存在。我还尝试了 nm
命令,结果是
000000000092a212 D _binary_misc_a_tga_end
00000000000c0012 A _binary_misc_a_tga_size
000000000086a200 D _binary_misc_a_tga_start
00000000004d0c84 t _ZN12_GLOBAL__N_118tga_decompress_RLEEPhPKhS2_iii
为什么这对图像文件不起作用,有什么解决办法吗?
其实我的问题与这个嵌入问题无关。 tga 对象已成功加载。是我看错参数导致图片加载库没有识别到对象
所以结论是cmake和我的加载代码都运行良好。现在我应该删除这个问题吗?
抱歉问这个问题,因为我对社区规则不是很熟悉。
我试图通过添加以下内容将图像和着色器嵌入到单个 opengl 可执行文件中:
FUNCTION(ADD_RESOURCES out_var)
SET(result)
FOREACH(in_f ${ARGN})
FILE(RELATIVE_PATH src_f ${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/${in_f})
SET(out_f "${PROJECT_BINARY_DIR}/${in_f}.o")
ADD_CUSTOM_COMMAND(OUTPUT ${out_f}
COMMAND ld -r -b binary -o ${out_f} ${src_f}
DEPENDS ${in_f}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMENT "Building object ${out_f}"
VERBATIM
)
LIST(APPEND result ${out_f})
ENDFOREACH()
SET(${out_var} "${result}" PARENT_SCOPE)
ENDFUNCTION()
ADD_RESOURCES(RES
shaders/test.vert
shaders/test.frag
misc/a.tga
)
extern const char _binary_shaders_test_vert_start, _binary_shaders_test_vert_end;
extern const char _binary_shaders_test_frag_start, _binary_shaders_test_frag_end;
extern const unsigned char _binary_misc_a_tga_start, _binary_misc_a_tga_end;
问题是加载的着色器运行良好,但无法加载 tga。查看日志后,我发现 &_binary_misc_a_tga_end
和 &_binary_misc_a_tga_start
确实存在,虽然这些地址的值都是 0.
说清楚一点,&_binary_misc_a_tga_end
和&_binary_misc_a_tga_start
就像那些shader对象,没什么奇怪的。从 _binary_misc_a_tga_end
到 _binary_misc_a_tga_start
的值都是 0,这很奇怪。
misc/a.tga.o确实存在。我还尝试了 nm
命令,结果是
000000000092a212 D _binary_misc_a_tga_end
00000000000c0012 A _binary_misc_a_tga_size
000000000086a200 D _binary_misc_a_tga_start
00000000004d0c84 t _ZN12_GLOBAL__N_118tga_decompress_RLEEPhPKhS2_iii
为什么这对图像文件不起作用,有什么解决办法吗?
其实我的问题与这个嵌入问题无关。 tga 对象已成功加载。是我看错参数导致图片加载库没有识别到对象
所以结论是cmake和我的加载代码都运行良好。现在我应该删除这个问题吗?
抱歉问这个问题,因为我对社区规则不是很熟悉。