Я пытаюсь встроить изображения и шейдеры в один исполняемый файл 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
похожи на эти шейдеры. предметы, ничего странного. Значения от _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
Почему это не работает с файлом изображения и есть ли какое-нибудь решение?