2015-09-15 3 views
1

Я хочу представить свои объекты как текстурированные выпуклые многоугольники. По большей части это будут только поворотные прямоугольники, но я тоже хочу поддерживать выпуклые фигуры, и именно там возникают проблемы.Как правильно отобразить текстуру на выпуклый многоугольник в SFML или OpenGL?

Я работал с Blender некоторое время назад, и там вы можете разворачивать 3D-объекты и эксплицитно сказать Blender, какая вершина формы имеет то положение на текстуре.

Возможно, было бы лучше просто запросить текстуру иметь размер ограничивающего прямоугольника формы, чтобы я мог просто применить текстуру к SFML?

PS: Мне жаль, что я не могу опубликовать фотографии, чтобы уточнить мой вопрос.

+1

Почему бы просто не использовать 'sf :: ConvexShape' и' setTexture' для этого? –

ответ

1

или OpenGL

В OpenGL, как правило, вы будете иметь две атрибуты вершин (или больше!): Положение и координаты текстуры. Это в основном говорит , какая вершина формы имеет, какая позиция на текстуре.

Вот что SFML имеет, делает внутренне, и с момента ее с открытым исходным кодом, вы можете просто заглянуть внутрь и посмотреть, если ваша идея «ограничивающий прямоугольник» имеет возможность работать (я думаю, что это действительно делает) ,

+0

Да, я тестировал, что это сработало, но я думаю, что было бы удобнее создавать текстуру, а затем решать, как она отображается на фигуре, а не сначала определять, как она отображается, а затем создавать текстуру после нее. То, как я это вижу, уменьшит возможность повторного использования моих текстур, поскольку они специфичны для объекта Как вы говорите, это работает с координатами текстуры в OpenGL, я исследовал его перед тем, как спросить и никогда не нашел, что кто-то объясняет их как «Положение вершин на текстуре «Возможно, у вас есть ссылки с хорошим материалом, чтобы читать abou it :)? – sro5h

+0

* никогда не обнаружил, что кто-то объясняет их как «Положение вершин на текстуре» * - возможно, вы просто так не поняли. Дело в том, что конкретная текстура и определенный набор коордов должны соответствовать в любом случае, и при изменении текстуры вы можете изменять некоторые данные изображения, но отображение вряд ли изменится вообще, по крайней мере во всех практических сценариях, о которых я знаю. –

+0

Я думаю, вы поняли меня неправильно. Предположим, что я сделаю это с приближением «ограничивающего прямоугольника», каждая текстура будет специфичной для одной фигуры и будет трудно повторно использовать. Например, на другом объекте с одинаковой формой, но с разным вращением (что приводит к тому, что текстура также имеет неправильное вращение) – sro5h