Как проверить, находится ли мышь на одной стороне экрана в OpenGl? - PullRequest
0 голосов
/ 01 мая 2019

В opengl, как я могу проверить, находится ли указатель мыши внутри объекта. Пока я могу только проверить, находится ли он внутри экрана, используя glutPassiveMotionFunc.

1 Ответ

1 голос
/ 01 мая 2019

Полагаю, вы хотите узнать, какой объект находится под вашей мышью или под нажатым пикселем.Существует метод, называемый 3d-сбор.Он состоит из рисования вашей сцены на текстуре, созданной специально для этой цели.Он должен иметь то же измерение, что и ваше окно.Вы нарисуете свою сцену с помощью специального шейдера, который нарисует идентификатор ваших объектов на текстуре.После чего вам просто нужно прочитать пиксель, в котором находится мышь, чтобы узнать, какой объект выбран.

Это мой фрагментный шейдер, он принимает идентификатор текущего объекта:

#version 330 core

uniform uint id;

layout(location = 0) out uvec4 out_color;

void main()
{
    uvec4 color;
    color.x = (id & 0xff0000u) >> 16;
    color.y = (id & 0x00ff00u) >>  8;
    color.z = (id & 0x0000ffu) >>  0;
    color.w = uint(255);

    out_color = color;
    return;
}

Вы также можете проверить этот урок: http://ogldev.atspace.co.uk/www/tutorial29/tutorial29.html

...