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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2010, 07:13   #41
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
По умолчанию Build 6

Цитата:
Сообщение от Asker13 Посмотреть сообщение
P.S. Спасибо за исходные коды, многое для себя почерпнул, что касается ООП.
Спасибо на хлеб не намажешь. А вот репутацию... (намекаю на кнопочку с весами).

Выкладываю самый нестабильный билд (в том смысле, что в будущем многое будет не так). На иерархию классов интерфейса и его реализацию даже не смотрите (!).

Научился выводить текст, но для этого приходится менять проекцию на gluOrtho2D, что, на мой взгляд, неэффективно. Иначе текст появляется, но на каждом кадре уезжает вправо. Может есть мысли, как вывести текст в перспективной проекции?

Ещё не работает как следует функция винды ShowCursor. Сначала думал, что это мой косяк, но и после вызова ShowCursor(True) курсор не хотел отображаться. А есть начать <Esc> (выход в меню) и щёлкнуть вне окна, а потом щёлкнуть в окне и снова нажать <Esc>, то курсор появляется и больше не исчезает. В чём баг?
Вложения
Тип файла: rar fezel.rar (692.2 Кб, 89 просмотров)

Последний раз редактировалось anyx; 27.12.2010 в 12:43.
anyx вне форума Ответить с цитированием
Старый 27.12.2010, 08:45   #42
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Цитата:
Научился выводить текст, но для этого приходится менять проекцию на gluOrtho2D, что, на мой взгляд, неэффективно. Иначе текст появляется, но на каждом кадре уезжает вправо. Может есть мысли, как вывести текст в перспективной проекции?
Я вообще не вижу смысла юзать glTranslate(), glRotate()... Заведи лучше свой класс или запись(record) и определи свои функции для работы с матрицами...
Kostia вне форума Ответить с цитированием
Старый 27.12.2010, 09:28   #43
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
По умолчанию

Цитата:
Сообщение от Kostia Посмотреть сообщение
Я вообще не вижу смысла юзать glTranslate(), glRotate()... Заведи лучше свой класс или запись(record) и определи свои функции для работы с матрицами...
Для этого нужно писать свои варианты операций с матрицами. Я пока не хочу в это углубляться. И даже если напишу, всё рано придётся думать, как вывести текст в перспективной проекции - результат моих операций, по логике, будет тот-же, что и у встроенных.
anyx вне форума Ответить с цитированием
Старый 27.12.2010, 11:07   #44
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Теперь текстуры накладываются нормально. Иногда, правда, в стены немного влипаешь, особенно если вскользь их задеваешь, так что ровность движения из-за этого теряется, ну это плюс-минус мелочи.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 27.12.2010, 11:25   #45
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Теперь текстуры накладываются нормально.
Просто теперь в папке с ехе-шником мои opengl32.dll и glu32.dll, на которых всё проверено. Кстати, не лучше ли таскать эти библиотеки, взятые из 32-разрядной версии Win7? Если у вас эта система, выложите эти библиотеки. Проверю, не будет ли проблем с совместимостью, и если будет всё в порядке, оставлю их.

P.S. Хотя, имеет ли это смысл? Мелкомягкие opengl не развивают. Может эти версии и не отличаются. Вообще, жаль, что только столь древняя opengl доступна под виндой (1.3 вроде)

Последний раз редактировалось anyx; 27.12.2010 в 12:00.
anyx вне форума Ответить с цитированием
Старый 27.12.2010, 11:36   #46
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Не парся с glOrtho(), +1 пересчет матрицы к тысячи особо не замедлит работу программы, но если так хочешь оптимизировать, заранее заготовь рассчитанные матрицы проекции(Ortho и Perspective) и устанавливай их по одному разу за кадр.

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

Код:
void glxMatrix4x4f::Perspective(float fovy, float aspect, float znear, float zfar)
{
	float f = 1 / tanf(fovy / 2),
	      A = (zfar + znear) / (znear - zfar),
	      B = (2 * zfar * znear) / (znear - zfar);

	matrix[ 0] = f / aspect; matrix[ 1] =  0; matrix[ 2] =  0; matrix[ 3] =  0;
	matrix[ 4] = 0;          matrix[ 5] =  f; matrix[ 6] =  0; matrix[ 7] =  0;
	matrix[ 8] = 0;          matrix[ 9] =  0; matrix[10] =  A; matrix[11] =  B;
	matrix[12] = 0;          matrix[13] =  0; matrix[14] = -1; matrix[15] =  0;
}

void glxMatrix4x4f::Ortho(float left, float right, float bottom, float top, float zNear, float zFar)
{
	const float tx = - (right + left) / (right - left),
				ty = - (top + bottom) / (top - bottom),
				tz = - (zFar + zNear) / (zFar - zNear);

	matrix[ 0] = 2 / (right - left);matrix[ 1] =  0;                 matrix[ 2] =  0;                  matrix[ 3] =  tx;
	matrix[ 4] = 0;					matrix[ 5] =  2 / (top - bottom);matrix[ 6] =  0;                  matrix[ 7] =  ty;
	matrix[ 8] = 0;					matrix[ 9] =  0;                 matrix[10] =  -2 / (zFar - zNear);matrix[11] =  tz; 
	matrix[12] = 0;					matrix[13] =  0;                 matrix[14] =  0;                  matrix[15] =  1;
}
_________
Под углом в 45n(n=1,3,5...) градусов я хожу быстрее, делай нормировку скорости...

Последний раз редактировалось Kostia; 27.12.2010 в 11:51.
Kostia вне форума Ответить с цитированием
Старый 28.12.2010, 10:54   #47
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
Сообщение Build 7

Более-менее полноценно реализовал интерфейс. Есть баги - текст отображается неправильным цветом, но в целом всё работает. Есть Label'ы и Button'ы. Отображаются на поверхности компонента-родителя с правильными координатами.
Вложения
Тип файла: rar fezel.rar (698.1 Кб, 39 просмотров)
anyx вне форума Ответить с цитированием
Старый 02.01.2011, 20:13   #48
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
По умолчанию Build 8

Так, изменений с прошлой версии почти нет, выкладывают только чтобы не было несоответствия версий.

У меня две проблемы. Во-первых, срочно нужно оптимизировать. У меня на компе всего 10 fps. Да, комп у меня очень слабый. Но такая простая сцена не должна так нагружать комп. У кого есть опыт, подскажите, где можно оптимизировать?

Во-вторых (это уже не так важно), надо бы переходить от текстовых файлов к бинарным, так же надо делать кое-какую физику (а не то извращение, что я сейчас использую). Есть идеи по поводу формы хранения объектов (координаты, текстуры, физические свойства)?

Цитата:
Сообщение от Kostia Посмотреть сообщение
При проверки столкновений не стоит просто делать скорость 0, делай выталкивание перса на величину проникновения в препятствие по нормали препятствия... Тогда проблемы сами отпадут...
Да я знаю. Только в формуле нахождения расстояния между точкой и плоскостью используется векторное произведение в пространстве, а я знаю только для плоскости. Не знаете формулу?

P.S. Честно, гуглил минут тридцать, но формулу векторного произведения в пространстве так и не нашёл...

P.S.2. Сегодня доделал кое-что, решил новый билд не делать, выкладываю здесь. Короче, в этом сообщении версия от вчерашней отличается.
Вложения
Тип файла: zip fezel.zip (2.11 Мб, 59 просмотров)

Последний раз редактировалось anyx; 03.01.2011 в 15:59.
anyx вне форума Ответить с цитированием
Старый 11.01.2011, 16:14   #49
Shinnok91
Пользователь
 
Регистрация: 30.07.2010
Сообщений: 30
По умолчанию

Цитата:
Сообщение от anyx Посмотреть сообщение
Так, изменений с прошлой версии почти нет, выкладывают только чтобы не было несоответствия версий.

У меня две проблемы. Во-первых, срочно нужно оптимизировать. У меня на компе всего 10 fps. Да, комп у меня очень слабый. Но такая простая сцена не должна так нагружать комп. У кого есть опыт, подскажите, где можно оптимизировать?

Во-вторых (это уже не так важно), надо бы переходить от текстовых файлов к бинарным, так же надо делать кое-какую физику (а не то извращение, что я сейчас использую). Есть идеи по поводу формы хранения объектов (координаты, текстуры, физические свойства)?



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

P.S. Честно, гуглил минут тридцать, но формулу векторного произведения в пространстве так и не нашёл...

P.S.2. Сегодня доделал кое-что, решил новый билд не делать, выкладываю здесь. Короче, в этом сообщении версия от вчерашней отличается.
При скачивании последнего архива антивирус ругается очень сильно.
С предыдущим билдом (предпоследний вопрос) такого не было.
Перепроверь архив и перезалей.
Shinnok91 вне форума Ответить с цитированием
Старый 25.04.2011, 12:03   #50
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
По умолчанию

Есть несколько проблем:
1. Координаты клика в OnClick и подобных передаются относительно верхней границы окна, а не клиентской области. И ф-ия glViewport, похоже, устанавливает область просмотра от границы окна. Что делать? У меня label-ы с маленькой x координатой наполовину перекрываются заголовком окна. Это не дело...
2. При переходе в полноэкранный режим (ф-ия ChangeDisplaySettings) контекст рендеринга теряется - чёрный экран вместо графики. Читал, что нужно переходить в полноэкранный режим до создания окна, но с моей иерархией классов потребуется много переделок. Может есть другой выход?
3. Оптимизация. Не могу найти, что можно оптимизировать в обработчике OnIdle, чтобы поднять FPS. Вроде я всего вывожу графику и смотрю, нет ли столкновений со стенами, а тормозит на моём компе прилично.
anyx вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ничего себе... 3D шутер... mihali4 Gamedev - cоздание игр: Unity, OpenGL, DirectX 91 21.05.2011 13:29