LINUX.ORG.RU

OpenGL: Текстура вращается как бешеная

 , ,


0

2

Здравствуйте! Рисую текстуру с памощью openGL:

glEnable(GL_TEXTURE_2D);

		glBindTexture(GL_TEXTURE_2D, texture.texture);
		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_NEAREST);

		glRotatef((double)angle, 0.0, 0.0, 1.0);

		glBegin(GL_QUADS);
			switch(flip){
				case EGE_FLIP_NONE:
					glTexCoord2f(0.0f, 0.0f); glVertex2f(x, y);
					glTexCoord2f(1.0f, 0.0f); glVertex2f(x + w, y);
					glTexCoord2f(1.0f, 1.0f); glVertex2f(x + w, y + h);
					glTexCoord2f(0.0f, 1.0f); glVertex2f(x, y + h);
				break;
				case EGE_FLIP_VERTICAL:
					glTexCoord2f(0.0f, 0.0f); glVertex2f(x, y + h);
					glTexCoord2f(1.0f, 0.0f); glVertex2f(x + w, y + h);
					glTexCoord2f(1.0f, 1.0f); glVertex2f(x + w, y);
					glTexCoord2f(0.0f, 1.0f); glVertex2f(x, y);
				break;
				case EGE_FLIP_HORIZONTAL:
					glTexCoord2f(0.0f, 0.0f); glVertex2f(x + w, y);
					glTexCoord2f(1.0f, 0.0f); glVertex2f(x, y);
					glTexCoord2f(1.0f, 1.0f); glVertex2f(x, y + h);
					glTexCoord2f(0.0f, 1.0f); glVertex2f(x + w, y + h);
				break;
			}
		glEnd();

glDisable(GL_TEXTURE_2D);

Решил добавить поворот:

...
glRotatef((double)angle, 0.0, 0.0, 1.0);
glBegin(GL_QUADS);
...

Но при запуске программы, текстура начинает вращатся вокруг своей оси как бешеная. Мне нужно, что бы она оставалась на месте, а не крутилась! Что не так?

Ответ на: комментарий от egordorichev

Спасибо большое, а то у меня все примеры (универские) под winAPI заточены, я уж от безысходности свою функцию накатал

Dred ★★★★★
()
Ответ на: комментарий от O02eg

а ещё? я спрашивал ранее тут и остановился всё-таки даже не на глюте как Eddy_Em, а на SDL:

https://www.linux.org.ru/forum/development/11044658

мне советовали для opengl > 1.x. Но не на всех картах 2-й версии Opengl поддерживается c этими решениями, и кроссплатформенность (не очень важна конечно, но вдруг кто захочет твоё «творчество» перенести) тоже нужно в какойто мере учитывать.

либо голый Opengl, как egordorichev советует

Frost ★★★
()
Последнее исправление: Frost (всего исправлений: 6)
Ответ на: комментарий от Eddy_Em

А что, шейдеры — это хорошо?

Начнем от паравых машин издалека, чтоб не травмировать... Словосочетания «spatial locality», «locality-aware memory hierarchy» и «data driven» тебе о чем-нибудь говорят?

slackwarrior ★★★★★
()
Ответ на: комментарий от Frost

Правильно говоришь. Я и 3D глутом отлично рисую. Мне нужно только визуализацию нормальную, нафиг мне тени?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

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

Frost ★★★
()
Последнее исправление: Frost (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

Вморг! Ну ладно. А разрыв и бомбление от отставания скорости бортовой памяти от ее специализированных вариантов в кэше и GPU на знаменитом графике тоже не видел?

slackwarrior ★★★★★
()
Ответ на: комментарий от Frost

А еще можно создать "прямой" буфер вершин, когда CUDA напрямую (без перекидывания данных между обычной оперативкой и видеопамятью) обрабатывает данные и меняет координаты вершин → картинка довольно-таки шустро видоизменяется. В играх это нахрен не надо, а в прикладнухе бывает нужно.

Еще бы собраться с силами, да написать под GLUT библиотечку виджетов, чтобы человеческую гуйню делать. Потому как изредка бывает нужно сделать прямую гуйню, а не веб-морду (если картинка шустрей одного кадра в секунду меняется или рилтаймовое 3D нужно, на котором вебгль тормозит).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Deleted

а какой смысл в сообщении выше по отношению к Эдуарду? (можешь не отвечать)

Frost ★★★
()
Ответ на: комментарий от Eddy_Em

Зачем? A-sex works perfect on both genders Глют в смысле. И еще можно что-то самокритично проблеять про «изощренный подход» - и кэпу нечего сказать. Мсьи знают толк: «поставишь видуху раком к дереву...» (с) И GLUTом ее, GLUTом. Через deprecated API.

slackwarrior ★★★★★
()
Ответ на: комментарий от slackwarrior

Пока ничего лучше глута не придумали, буду пользоваться глутом. Как будет что-то удобней глута — воспользуюсь этим.

А извращенцы, которые вместо страницы кода накатывают десяток страниц пусть идут лесом. Я не собираюсь заниматься всяким бредом. Интерфейс — последнее дело, на что нужно обращать внимание! И уж тратить лишние силы на интерфейс — это вообще маразм.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Пока ничего лучше глута не придумали, буду пользоваться глутом.

«Лучше» - ты поясни, в каком смысле, если ты про spatial locality не слышал, а график тормозов, разрыва и бомбления по воводу не видел...

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

Да отстань ты от меня! Что прицепился?

Мне насрать на ваши погромистские штучки! Мне главное — чтобы тормозов не было. А тормозов и нет, т.к. как может тормозить гуйня, когда основная тормозящая штука никак с гуйней не связана?

И графики себе засунь куда подальше. Я делаю для себя. И у меня на первом месте — простота. На втором — тормоза. Если тормозит очень сильно, то приходится немного простоту усложнить. Если же тормоза терпимы, то и насрать на них! Это погромисты пусть думают, как бы им пооптимальней сделать — им за это платят.

Хотя, для отображения 3D я хитро рисовал tringlesstrip (одна строка в одном направлении, следующая — в обратном) — чтобы "лицевая" и "обратная" стороны не путались. Ну и по возможности не списки, а VBO юзал (если железо поддерживает). Сечас вот глянул — часть кода можно было бы на куду перенести, чтобы еще шустрей было. Но лень, все равно гуйня практически не тормозит по сравнению с другими вычислениями.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

визуализацию нормальную

все еще хочешь? :)

Мне главное — чтобы тормозов не было.

Ну... тут ты почти добрался до сути :) Только забыл выдавить из себя раба GLUTа и прочих утенков.

Это погромисты пусть думают, как бы им пооптимальней сделать — им за это платят.

Так уже за тебя все придумали :) Бери, пользуйся... А ты копротивляешься.

slackwarrior ★★★★★
()
Ответ на: комментарий от slackwarrior

Так уже за тебя все придумали

Название библиотеки — в студию! Пока я только какие-то поверхностные рассуждения видел.

Давай, открывай секрет, что за библиотека еще проще глута.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от slackwarrior

Минуточку! Мы про что тут заговорили, про переброску задач с cpu на gpu, если это так то любое решение будет зависеть от железа. Причем тут память?

Frost ★★★
()

Вот что за нафиг? Не пойму, почему у меня не отображается эта тема в трекере. Неужто таки мольбы были услышаны и черный список стал более приоритетным, нежели белый?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Frost

Минуточку! Мы про что тут заговорили, про переброску задач с cpu на gpu, если это так то любое решение будет зависеть от железа. Причем тут память?

Да не в теме ты, про локальность, уже и так понятно было выше.

slackwarrior ★★★★★
()

Вся суть ЛОРа ☺

Вот, кстати, в этой теме видна вся суть ЛОРа: человек задал вопрос. Ему ответили (практически в самом начале темы). Он пометил тему как решенную.

Но набежали всякие левые и начали твердить, что он делает неправильно.

При этом ни одна шавка так и не вякнула, как правильно. Ржачно. "Цари" размножаются ☺

Eddy_Em ☆☆☆☆☆
()
Ответ на: Вся суть ЛОРа ☺ от Eddy_Em

Но набежали всякие левые и начали твердить, что он делает неправильно.

Если «на принцип» пойти - левый тут ты :) Учишь людей плохому.

slackwarrior ★★★★★
()
Ответ на: комментарий от Frost

Данные возить туда-сюда между уровнями иерархии памяти - дорого, не? И чем далее «безудержный прогресс» - тем дороже. «Твой кэп» (с) Но тепловое загрязнение планеты тебя колыхает мало, правда? :) Однако, песни про «нормальную визуализацию» и «чтоб не тормозило» на фоне тотального обскурантизма на тему причин тормозов - это тебя не удивляет (понятно почему)... Потому что как лучше сделать ты не пытался узнать. (Т.е. мне понятно, почему «тебе непонятно». Но при этом выглядит это забавно - упорство в поедании любимых кактусов)

slackwarrior ★★★★★
()
Ответ на: комментарий от Eddy_Em

согласен, но пусть приведет пример хоть для твоих нужд

Frost ★★★
()
Ответ на: комментарий от slackwarrior

Нет. Как раз как «царь» себя ведешь ты. Ты говоришь, что мы делаем неправильно, но ничем не доказываешь свои слова кроме пустых никчемных графиков!

Ты код покажи, который сделает то же самое, но будет компактней. Вот тогда и поговорим.

Eddy_Em ☆☆☆☆☆
()
Ответ на: Вся суть ЛОРа ☺ от Eddy_Em

При этом ни одна шавка так и не вякнула, как правильно.

Естественно, ведь единственная шавка тут - это ты, а от тебя довольно редко можно услышать что-либо адекватное.

Deleted
()
Ответ на: комментарий от slackwarrior

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

Вот погромисты пущай и придумывают, как сделать покошерней. А мне нужно как можно проще. Потому что мне и так нужно то 100500 отверстий насверлить в железяках, резьбы нарезать, подогнать все, съюстировать и т.п.; то быстренько на коленке методику тестирования железяки придумать; то проанализировать полученные данные (тоже побыстрей, т.к. еще 100500 винтов ждут своей очереди, а тут еще принтер накрылся или рутер забарахлил, и надо их починять)...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Код чего? Шейдеров? Наркоман, да? В википедии зобанеликвест тоже до конца прошел?

Ты в принципе неправильно эксплуатируешь современное железо (если оно поддерживает шейдеры). Но похуй - я надеюсь, ты когда-нибудь купишь себе маффынку, и попадешь на гарантию, ездя «в две педали», «делая как привык», а не как эффективно.

кроме пустых никчемных графиков!

Пойди Гордону Муру пожалуйся, что его «закон» - говно.

slackwarrior ★★★★★
()
Ответ на: комментарий от Eddy_Em

Ясен пень, если я буду дороги ремонтировать, получится хрен знает что.

А какого черта ты тогда советы даешь тут?

Deleted
()
Ответ на: комментарий от Eddy_Em

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

А ничего, что у меня ВУСовка про строительство дорог, и я в этом кой-чего понимаю, в отличие от тебя? :) «Ямочный ремонт» - это хуета. Подпорка костылями того, что сделано с нарушением технологии (иначе бы не ремонтировалось каждыйцелый год и не по разу)

Заплатки хуярить - это замечательный способ обеспечить программистов и дорожников 100500% занятостью.

slackwarrior ★★★★★
()

slackwarrior, тебе не хватает только неграмотности речи. И будешь — вылитый "Царь": несешь какую-то бредятину про то, что все — "лалки анскильные", но при этом совершенно ничем не доказал свои слова. Забавный ты.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Меня невозбранно можно назвать ничтожеством и чмом, т.к. я этим самым и являюсь.

kek

Deleted
()
Ответ на: комментарий от slackwarrior

я полностью ЗА нормальную визуализацию и чтоб не тормозило, но время которое ты затратишь на низкоуровневое программирование в определенных задачах по визуализации пройдет впустую, может быть оно того и не стоило, как в случае с Эдуардом. Насчёт «прогресса» и он меня беспокоит, но подход к задаче нужно взвешивать. Гдето и глюта будет «с головой».

Frost ★★★
()
Ответ на: комментарий от slackwarrior

И с одной стороны шейдеры - opengl > 2.0, как с этим быть? Выбрасывать старое железо которое ещё работает, устарело но выполняет функции? Это отсев получается.

Frost ★★★
()
Последнее исправление: Frost (всего исправлений: 1)
Ответ на: комментарий от Frost

А ещё что? Здесь чисто матрицы и вектора, что ещё надо? При чём тут SDL вообще?

Но не на всех картах 2-й версии Opengl поддерживается c этими решениями

2015

Зачем вам 3D на вашей кофеварке?

O02eg ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.