загрузить файл .model в C ++ - PullRequest
1 голос
/ 23 января 2010

Я работаю над проектом opengl на C ++.Мне нужно написать загрузчик для ввода функций из файла .model.Кажется, fstream не может справиться с этим.Любой комментарий или совет?Благодаря.

Ответы [ 2 ]

4 голосов
/ 23 января 2010

Возможно, вы используете fstream неправильно. Если вы откроете его в текстовом режиме, вы получите конверсии, которые испортят ваш процесс загрузки. Вам нужно открыть файл как двоичный файл.

std::ifstream file("something.model", std::ios::binary);

Затем вы можете прочитать необработанные данные:

// read in float
float f;
file.read(&f, sizeof(f));

Как вам нужно. Имейте в виду, что такие типы, как int или char, не обязательно имеют правильную битовую ширину. Если вы хотите быть уверены, вам нужны целые числа фиксированной ширины. Boost предоставляет такую ​​библиотеку .

#include <boost/cstdint.hpp>

// ...
// read a 32-bit int
boost::uint32_t i;
file.read(&i, sizeof(i));
1 голос
/ 23 января 2010

Данные в вашем файле .model, скорее всего, будут числами, описывающими координаты каждого полигона вашей модели. Вы должны читать номера тезисов так же, как вы читаете данные в любом другом типе файла, и использовать примитивы openGL для рисования полигонов вашей модели.

Проблема в том, что существует много разных способов представления группы полигонов с числами, поэтому ваш файл .model практически бесполезен, если вы не знаете структуру вашего файла .model.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...