LINUX.ORG.RU

Как нарисовать полупрозрачную точку в OpenGL?

 ,


0

2

Всем привет!

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

glEnable(GL_BLEND);
glBlendFunc ( GL_SRC_COLOR, GL_ONE_MINUS_SRC_ALPHA);
/* Loop until the user closes the window */
while (!glfwWindowShouldClose(window))
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
    glBegin(GL_POINTS);
    for(const auto& point: points)
    {
        glColor4f(_points[point.color].r, _points[point.color].g, _points[point.color].b, 0.9f/*point.vec.w*/);
        glVertex3f(point.vec.x, point.vec.y, point.vec.z);
    }
    glEnd();
}

Почему поточечно что-то рисую? Потому что это визуализация физической модели.

★★

Последнее исправление: aido (всего исправлений: 1)

Почему поточечно что-то рисую? Потому что это визуализация физической модели.

Делай поточечную текстурку и натягивай её как положено. Это же мрак точками рисовать.

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

А в чем выигрыш? Там так и так придется пройтись по всем этим точкам. И у них у каждой свой альфа-канал. 15000 точек у меня рисуются мгновенно.

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

С другой стороны, мне можно предрасчет цветов сделать, но это какой-то костыль делать на ЦПУ...

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

А в чем выигрыш?

В том что с текстуркой удобнее работать. Её можно легко подвергнуть постобработке и т.д.. Да и вообще сохранить её просто куда-либо.

peregrine ★★★★★
()

Как нарисовать полупрозрачную точку в OpenGL

шейдерами

PexuOne
()

выкини OenGL2

и используй OpenGL3+ (или GLES2+ или webgl/webgl2)

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

https://www.shadertoy.com/new

missxu
()
Ответ на: комментарий от anonymous

Это заговор. Тыквят россиюшку, чтоб glBegin-ами захлёбывалась.

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

Да. Вообще тупо половина англоязычных сайтов побанена. Особо не ноют, т.к. крупные, вроде сайта Qt разбанили/они сами озаботились переехать, ну а даже на ЛОР-е тех кто активно юзает англоязычный инет почти нет. Кто есть озаботились VPN-ом.

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

Да. Вообще тупо половина англоязычных сайтов побанена.
половина

Как считал?

англоязычных

Сайты на остальных языка на амазоновском и гугловском облаках работают нормально?

Местные эксперты доставляют.

anonymous
()

glPushMatrix();

А pop где? Или для тебя это магическая функция?

Проекционную матрицу настроил? Вообще в 2k18 не надо трахаться с glBegin.

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

Как считал?

Из того что я посещал и что у меня в закладках (около сотни сайтов) половина не работает без VPN.

peregrine ★★★★★
()

Вот так и спрашивай у людей. Вечно кто-то вылезет со своей критикой вместо того, что помочь. А я все же попробую помочь: похоже, надо сделать так

glBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

ну и может быть пригодится (если у тебя много пересекающихся точек):

glDepthMask(GL_FALSE);
EvilSpirit
()

А чтоб было красиво:

glEnable(GL_POINT_SMOOTH);
glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);

EvilSpirit
()
Ответ на: комментарий от peregrine

Просто половина данных ресурсов заблочена в РФ РКН.

Ты правда думаешь, что тебе все поверят, не проверив?

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

Меньше вызовов api. Считай на каждую точку в видеокарту улетает команда + координаты + цвет. А текстура улетит один раз тупым массивом, а потом одна команда её отрисовки. Ты увеличиваешь объём передаваемых данных в разы. Плюс любой вызов api системы это переключение контекста и сильный оверхед.

К тому же проц имеет кучу оптимизаций для типовой операции «скопировать массив из одного места в другое». И они не будут работать при разборе очереди команд (очевидно, там будут всякие ветвления и т. д.)

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

У меня learnopengl.com и open.gl не работают, т.к. первый имеет IP 128.199.49.46 (проверь на https://2ip.ru/whois/), проверить на блокировку можешь тут, а второй второй ресурс 128.199.47.24, как проверять ты уже знаешь, так что вытер жопу и свалил из треда, работяга РКН, который не в состоянии проверить что он блокирует.

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

У меня learnopengl.com и open.gl не работают

Да пополам, что _у тебя_ не работает :) У меня работают все четыре, без проксей.

свалил из треда, работяга РКН

Симптоматично :) Но на самом деле я Путин, только тсссс.

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

Есть два способа программирования: сделать программу быстро, или сделать код быстрым. В первом случае у вас будет программа и время в запасе, во втором случае у вас будет половина программы, которая работает быстро и нифига не останется времени. Выбирайте.

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

ну, вы можете научиться. и потом браться за работу. Хинт: так ЗП будет получше. Ещё хинт: прям сильно получше.

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

ну, вы можете научиться. и потом браться за работу. Хинт: так ЗП будет получше. Ещё хинт: прям сильно получше.

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

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