Простая текстурная карта OpenGL, не работающая?

bodyParser не обрабатывает form-data. Для этого вам понадобится multer .

В противном случае используйте application/x-www-form-urlencoded, поскольку у вас уже есть:

app.use(bodyParser.urlencoded({ extended: true }));

В Почтальоне вместо радио form-data используйте x-www-form-urlencoded.

enter image description here

7
задан Tony R 18 April 2009 в 21:48
поделиться

7 ответов

Я нашел проблему. Мой вызов glEnable был glEnable (GL_BLEND | GL_TEXTURE_2D) . Используя glGetError, я увидел, что получаю GL_INVALID_ENUM для этого вызова, поэтому я переместил GL_TEXTURE_2D в его собственную функцию включения и бинго. Я думаю, логическое ИЛИ не разрешено для glEnable?

1
ответ дан 6 December 2019 в 15:31
поделиться

В дополнение к примечанию ментата , что у вас может быть проблема с не-властью два измерения текстуры, вы упоминаете, что генерация имени текстуры не меняет имя.

Звучит так, как будто вы вызываете glGenTextures () слишком рано, то есть до инициализации OpenGL. Если это не так, я предлагаю добавить код сразу после вызова glGenTextures () , который проверяет состояние ошибки OpenGL, вызывая glGetError () .

6
ответ дан 6 December 2019 в 15:31
поделиться

В своих комментариях вы говорите, что ваше растровое изображение имеет размер 29x20 пикселей. На самом деле, чтобы сгенерировать правильную текстуру, OpenGL требует, чтобы размер изображения (для каждого измерения) был степенью 2. Это не обязательно должен быть квадрат, хотя это может быть прямоугольник. Вы можете преодолеть это с помощью некоторых расширений OpenGL, таких как GL_ARB_texture_rectangle .

3
ответ дан 6 December 2019 в 15:31
поделиться

Мой OpenGL ржавый, но я помню, что у меня были те же проблемы с glTexImage2D , Наконец мне удалось заставить его работать, но мне всегда больше везло с gluBuild2DMipmaps в итоге я получил

gluBuild2DMipmaps (
  GL_TEXTURE_2D, type, i.width, i.height, type, GL_UNSIGNED_BYTE, i.data
);

, который заменил

glTexImage2D (
  GL_TEXTURE_2D, 0, type, i.width, i.height, 0, type, GL_UNSIGNED_BYTE, i.data 
);
1
ответ дан 6 December 2019 в 15:31
поделиться

Первым делом я проверю настройку цветового материала, как было упомянуто ShadowIce, затем проверим ваш файл текстуры, чтобы убедиться, это разумный размер (то есть что-то вроде 256x256) и растровое изображение RGB. Если у файла есть даже небольшая проблема, он НЕ будет правильно отображаться, независимо от того, как вы пытаетесь.

Тогда я перестану пытаться просто отладить этот код и вместо этого посмотрю, что у вас отличается от учебника в Сайт NeHe .

NeHe - всегда хорошее место, чтобы проверить, пытаетесь ли вы что-то делать в OpenGL. Текстуры, вероятно, труднее всего понять, и они становятся все труднее, когда увеличиваются ваши остальные навыки ГЛ.

0
ответ дан 6 December 2019 в 15:31
поделиться

Некоторые случайные идеи:

  • GL_COLOR_MATERIAL может быть включен
  • измените "glTexEnvf" на "glTexEnvi" и посмотрите, поможет ли это
  • if texName1 равен 0 после glGenTextures, возможно, у вас нет активного контекста OpenGL

Для проверки ошибок я рекомендую написать небольшую функцию, которая печатает читаемый вывод для наиболее распространенных результатов от glGetErrors и использовать ее, чтобы найти строку, которая создает ошибку. Другой вариант - использовать что-то вроде GLIntercept , BuGLe или gDEBugger .

1
ответ дан 6 December 2019 в 15:31
поделиться

Я помещу это здесь, поскольку у меня была та же проблема и я нашел другой пост, объясняющий проблему. iPhone действительно поддерживает GL_BGRA(GL_EXT_BGRA), но, похоже, только как формат ввода, а не как внутренний формат. Поэтому, если вы измените вызов glTexImage2D, чтобы внутренний формат был GL_RGBA, то это сработает.

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_BGRA, GL_UNSIGNED_BYTE, &sprite1[54]);

Надеюсь, это поможет кому-нибудь еще, кто наткнется на это сообщение.

2
ответ дан 6 December 2019 в 15:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: