Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2012, 22:10   #1
impulsgraw
Верховный Судья
Пользователь
 
Аватар для impulsgraw
 
Регистрация: 23.11.2010
Сообщений: 82
По умолчанию Неправильное отображение текстур

Здравствуйте!
Начал писать игру на opengl, всё шло нормально, но при наложении текстур начались проблемы.
Программа во вложении.
Почему-то текстуры не подгружаются во время прорисовки функцией glBindTexture (прорисовываю все вершины через цикл из массива).
И текстура накладывается неправильно.
Так же объекты отображаются друг перед другом.
Вложения
Тип файла: rar QWorld.rar (249.2 Кб, 20 просмотров)
impulsgraw вне форума Ответить с цитированием
Старый 16.05.2012, 01:22   #2
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

1. У вас ЖИРНАЯ утечка памяти!
2. Включите GL_DEPTH_TEST и задайте glDepthFunc
3. Уроки по OpenGL с сайта NeHe
Kostia вне форума Ответить с цитированием
Старый 16.05.2012, 20:33   #3
impulsgraw
Верховный Судья
Пользователь
 
Аватар для impulsgraw
 
Регистрация: 23.11.2010
Сообщений: 82
По умолчанию

Тоесть как жирная утечка памяти?
impulsgraw вне форума Ответить с цитированием
Старый 16.05.2012, 20:42   #4
impulsgraw
Верховный Судья
Пользователь
 
Аватар для impulsgraw
 
Регистрация: 23.11.2010
Сообщений: 82
По умолчанию

Да, и если включить GL_DEPTH_TEST и задать glBlendFunc, то картинка либо постоянно мерцает, либо отображаются не все элементы (пробовал все значения этой функции).
Но z-буффер по-прежднему инвертирован (объекты отображаются друг перед другом)
impulsgraw вне форума Ответить с цитированием
Старый 16.05.2012, 20:49   #5
impulsgraw
Верховный Судья
Пользователь
 
Аватар для impulsgraw
 
Регистрация: 23.11.2010
Сообщений: 82
По умолчанию

Может мне задать нормали?
impulsgraw вне форума Ответить с цитированием
Старый 18.05.2012, 06:28   #6
Inv1s
Форумчанин
 
Аватар для Inv1s
 
Регистрация: 06.11.2011
Сообщений: 214
По умолчанию

Цитата:
Может мне задать нормали?
Нормали нужны для правильного падения света на объект.

Цитата:
Да, и если включить GL_DEPTH_TEST и задать glBlendFunc, то картинка либо постоянно мерцает, либо отображаются не все элементы (пробовал все значения этой функции).
Была такая же проблема. Особенно когда ворочаешь камеру
Исправил это параметром в z буфере. Если поставишь например GL_ALWAYS то не будет такого, но и z буфер не будет работать.
На GL_LEQUAL лично у меня проблемы ушли, с мерцанием.
Помог, нажми на весы
html, js, php, С++, С#, OpenGl, DirectX, XNA, HLSL
Inv1s вне форума Ответить с цитированием
Старый 18.05.2012, 13:18   #7
impulsgraw
Верховный Судья
Пользователь
 
Аватар для impulsgraw
 
Регистрация: 23.11.2010
Сообщений: 82
По умолчанию

Это работает, но почему-то объекты всё равно отображаются друг перед другом. Тоесть, например: рисую два закрашенных квадрата с одинаковым координатами, у одного z = 1, а у другого z = -1. Так вот, объект на заднем плане почему-то отображается перед объектом на переднем плане (!?). В перспективе это смотрится вообще ужасно.
impulsgraw вне форума Ответить с цитированием
Старый 18.05.2012, 14:18   #8
Inv1s
Форумчанин
 
Аватар для Inv1s
 
Регистрация: 06.11.2011
Сообщений: 214
По умолчанию

Проверяй где включаешь буфер, сбрасываешь, какая надстройка стоит на нем.
Установи на компе OpenGL новый у меня в универе в терминалках ужасно все показывает, примерно также как ты описал выше.
Помог, нажми на весы
html, js, php, С++, С#, OpenGl, DirectX, XNA, HLSL
Inv1s вне форума Ответить с цитированием
Старый 19.05.2012, 13:03   #9
impulsgraw
Верховный Судья
Пользователь
 
Аватар для impulsgraw
 
Регистрация: 23.11.2010
Сообщений: 82
По умолчанию

Знаешь, сначала я вообще работал без DL_DEPTH_TEST и всё было нормально, пока я не начал работать с текстурами...
А так, при инициализации, стоит только glEnable(GL_TEXTURE_2D) и всё.
А вот насчёт драйвера... Я пробовал запускать на нескольких компах - на всех одно и тоже.
impulsgraw вне форума Ответить с цитированием
Старый 19.05.2012, 23:10   #10
Warn
Форумчанин
 
Аватар для Warn
 
Регистрация: 03.11.2011
Сообщений: 230
По умолчанию

Цитата:
В перспективе это смотрится вообще ужасно.
а как она вообще настроена?

пробуй, копи-пастом после инициализации огла
Код:
  // Настроим Z-Buffer
	glEnable    ( GL_DEPTH_TEST );
	glDepthMask ( TRUE );
	glDepthFunc ( GL_LEQUAL ); 
	glClearDepth	( 1.0 );
Цитата:
картинка либо постоянно мерцает
может мерцать из за z-fighting'a
Warn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неправильное отображение итальянского на сайте Osmosis_Johnes HTML и CSS 2 13.04.2011 15:47
Неправильное отображение изображений Ga-sergey HTML и CSS 8 10.05.2010 21:03
Неправильное отображение Verdana в IE go0dwin HTML и CSS 3 09.07.2009 16:41
Canvas. Неправильное отображение. Мельканий нет, но вывод нечёткий. mflat Мультимедиа в Delphi 31 14.02.2009 22:49
Неправильное отображение шрифта chingiz Общие вопросы Delphi 2 25.01.2008 18:47