OpenGL текстура не работает - PullRequest
       50

OpenGL текстура не работает

0 голосов
/ 25 декабря 2011

Я пытаюсь научиться использовать текстуры в OpenGL.Я начал читать главу о наложении текстур в OpenGL Redbook.Я не понял этого, поэтому я погуглил и нашел этот урок .Я следовал инструкциям и до сих пор не могу заставить его работать. Это код.

Это - это мое изображение текстуры.Я использовал Photoshop, чтобы преобразовать его в это .Размер файла составляет 175 КБ, что примерно соответствует размеру (200x300x3 = 180000).

Я попытался прочитать файл в другой программе и посмотреть, правильно ли его содержимое.Кажется, я могу прочитать только около 221 пикселей (это примерно первая строка изображения), и он достигает eof ().В моей программе я читаю столько, сколько я ожидаю, но когда я отлаживал, я заметил, что после того, как некоторые точки байты обнулены .

Теперь я в замешательстве.Есть ли проблема с моей программой?Есть ли проблема с текстурой?Есть ли проблема со мной?Что я делаю неправильно?Как мне это исправить?

Ответы [ 3 ]

1 голос
/ 25 декабря 2011

Проблема в вашем коде.Вы пытаетесь прочитать двоичный файл в текстовом режиме.Вместо этого используйте следующий код:

ifstream tex("ace.raw", ios::in | ios::binary);
if(tex.is_open())
  for(int j=0; j<imH; ++j)
    for(int i=0; i<imW; ++i)
      for(int k=0; k<3; ++k)
      {
        face[j][i][k] = tex.get();
      }

tex.close();

Или намного более короткий и эквивалентный код:

ifstream tex("ace.raw", ios::in | ios::binary);
if (tex.is_open())
  tex.read((char*)face, sizeof(face));

tex.close();

Оба кода проверены, и переменная "face" содержит точно такое же содержимое, что и "ace.raw".

0 голосов
/ 25 декабря 2011

Как выглядит текстура? Это мусор? Это просто чистый белый (т.е. без текстуры)? В зависимости от вашей видеокарты, возможно, вашим текстурам потребуется степень двойки, так как ширина / высота и / или ваша текстура должна быть квадратной. Работает ли он без использования mipmaps?

Даже не имея возможности прочитать весь файл или имея там некоторые поврежденные данные, вы должны по крайней мере увидеть некоторый мусор в качестве текстуры, если чтение файла сходит с ума.

0 голосов
/ 25 декабря 2011

Нет, проблем нет. Изображения могут содержать много нулевых байтов, чтобы прочитать их все, ничего не пропустив, обязательно укажите их размер.

...