Я пытаюсь сделать закругленные треугольники для повышения производительности. Чтобы проиллюстрировать, что я имею в виду, см. Рисунок ниже:
Я пробовал в процессоре, теперь есть ли способ как-то переместить этот алгоритм в графический процессор? Я могу изменить код метода, который вызывает фрагментный шейдер?
Кстати, если я смогу это сделать, то на каком языке программирования мне нужно сделать это заново?
Я использую графический процессор OpenGL 2.1 с пропускной способностью памяти всего 20–30 ГБ.
Читать газету Независимая от разрешения визуализация кривой с использованием программируемого графического оборудования Чарльз Луп и Джим Блинн.
Короткая версия: если у вас есть эффективный внутренний / внешний тест для вашей кривой, визуализируйте форму окружающего корпуса как треугольник (-ы), используйте фрагментный шейдер, чтобы отбросить пиксели за пределами кривой.
Во-вторых, забота Aeluned о том, что передача алгоритма на GPU не сделает его быстрее.
Я не уверен точно, что ты задумал, но это кажется немного сомнительным. В действительности вы можете нанести ущерб производительности, пытаясь выполнить некоторые из этих пользовательских вычислений в шейдере, чтобы отобразить круг или эллипс.
Современное графическое оборудование может выдвигать миллиарды треугольников в секунду. Вы, вероятно, раскалываете волосы здесь.
В любом случае, если вы хотите «подделать» геометрию, это может вас заинтересовать: https://alfonse.bitbucket.io/oldtut/Illumination/Tutorial%2013.html
Так что не стоит реализовывать это для лучшей производительности в вашем случае.
Единственное, для чего я могу использовать это, — это облегчить ручное создание форм.
В этом случае просто напишите функцию glRoundedTriangle (….)
как это выглядело бы неизвестно, потому что вы не указали геометрию / форму округлого треугольника и / или входные параметры (например, 3 точки + 3 радиуса кривой со знаком?)
Для повышения производительности в OpenGL используйте VBO / VAO