jr13 писал(а):Я нашел какой-то пример, но он не очень, да и API там на каждом шагу. Неужели нельзя как-нибудь простенько преобразовать массив байт в картинку? Напишите кто-нибудь простенький примерчик пожалуйста, да хоть не простенький. Все только посылают и говорят, что что я тут забыл, а сами помочь не могут.
Надо просто взять и сказать себе: я никчёмность, я ничтожество, потому что я хочу делать игры, но не хочу правильно прямолинейно мыслить.
Я объясню сейчас.
Во-первых, API это единственное, что дано программисту, чтобы взаимодействовать со внешней средой. Программист, который допускает мысли вроде "ой, там много API", это всё равно, что рыба с аллергией на воду. Программист должен просто решать проблемы, а не придумывать себе задачу и искать способ её решения. Если есть задача, её нужно самому решать, а не искать информацию о том, как её решить. Ты не можешь решить свою задачу, потому что ты просто не сформулировал себе её ясно.
Твоя задача "преобразовать массив байт в картинку" либо не сформулирована четко, либо она уже по своей природе решена. Массив байтов уже является картинкой. Твой массив байтов уже содержит всю исчерпывающую информацию о картинке. Что ты хочешь? Что ты спрашиваешь?
Как преобразовать информацию о картинке в картинку? Что в данном случае случае означает последнее слово? Что означает слово "картинка"? Она означает информацию о картинке или совокупность светящихся точек на экране? Если первое, то твой вопрос звучит так: "Как преобразовать информацию о картинке в информацию о картинке?". Вообще никакой проблемы нет. Как из слона сделать слона. Если второе, то вопрос в нормальном виде будет звучать так: "Есть информация о картинке в массиве байт, как нарисовать эту картинку?". И ответить на этот вопрос предельно просто, зная две вещи: в каком виде в массиве байт находится информация о картинке и, какими средствами нужно пользоваться для отображения картинки (gdi, dx, opengl).
В прочем, я понимаю, что тебе хочется чего то другого. Наверное задача звучит всё же иначе: есть массив байт, содержащий информацию о картинке, нужно получить IPictureDisp-переменную. Позиция неудачника в данном случае: какать. "Как это сделать? Как, как, как?". Правильная позиция состоит в том, чтобы сначала определиться, зачем это надо, потому что вполне может оказаться, что и не надо вовсе (например, чтобы рисовать картинку, никакой IPictureDisp не обязателен). Если всё-таки надо, то правильная позиция состоит в том, чтобы просто взять и разобраться, что такое IPictureDisp. Когда ты сможешь дать мне, себе, кому угодно исчерпывающий ответ на вопрос "Что такое IPicture?", ты просто не будешь видеть перед собой проблему. Если твоя жизненная позиция заключается в том, чтобы насильно не знать, что такое IPicture, если тебе нравится, что IPicture для тебя является черным ящиком, которым ты вроде бы кое-как где-то пользуешься, но не понимаешь, что это такое, то я могу сказать только одно: мучайся дальше, желаю неудачи.
jr13 писал(а):А если в архиве будет запакована не картинка, а какой-нибудь меш модели в формате .x , то я могу получить только массив байт этого файла .x и мне нужно будет преобразовать этот массив в переменную, которую будет юзать DirectX...
Я видел не так много серьёзных игр, но не видел ни одной, которая бы использовала x-файлы. Это заставляет подумать, что X-файлы не обязательный и не единственный способ хранения и использования информации о геометрических телах. Это если рассуждать как человек, далёкий о DX. Но если ты, как ты говоришь, опытный программист, если ты делаешь игры, то надо думать, что ты хорошо знаешь DX. И в этом случае, ты наверное должен знать, что есть вертексный буфер и что он тебе доступен?