Не удается загрузить изображение TGA, встроенное с помощью CMake? - PullRequest
2 голосов
/ 25 мая 2020

Я пытаюсь встроить изображения и шейдеры в один исполняемый файл 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

Почему это не работает с файлом изображения и есть ли какое-нибудь решение?

1 Ответ

0 голосов
/ 26 мая 2020

На самом деле моя проблема не имеет ничего общего с этой проблемой встраивания. Объект tga был успешно загружен. Это была библиотека загрузки изображений, которая не распознала объект из-за того, что я неправильно понял параметры.

Итак, можно сделать вывод, что и cmake, и мой загрузочный код работают хорошо. Теперь мне просто удалить этот вопрос?

Извините за этот вопрос, так как я не очень хорошо знаком с правилами сообщества.

...