У меня есть текстура, нарисованная в GLcontrol, и я хочу рисовать точки поверх нее. Вместо этого я получаю полную текстуру с цветом точки, которую я хочу нарисовать. Я думаю, что я должен отключить формат текстуры и включить рисунки точек, но не могу найти решение …
Вот функция рисования:
По сути, точка рисования — это ROI [0], но вместо рисования только точки, я получил изображение, показанное ниже (это изображение в градациях серого, прежде чем рисовать «точку»).
private: void drawImg(int img){
int w=this->glControl_create_grid->Width;
int h=this->glControl_create_grid->Height;
GL::MatrixMode(MatrixMode::Projection);
GL::LoadIdentity();
GL::Ortho(0, w, 0, h, -1, 1); // Bottom-left corner pixel has coordinate (0, 0)
GL::Viewport(0, 0, w, h); // Use all of the glControl painting area
GL::Clear(ClearBufferMask::ColorBufferBit | ClearBufferMask::DepthBufferBit);
GL::ClearColor(Color::LightGray);
GL::MatrixMode(MatrixMode::Modelview);
GL::LoadIdentity();
GL::Enable(EnableCap::Texture2D);
GL::BindTexture(TextureTarget::Texture2D, img);
OpenTK::Graphics::OpenGL::ErrorCode error=GL::GetError();
GL::Begin(BeginMode::Quads);
GL::TexCoord2(0, 0);
GL::Vertex2(0 ,h);
GL::TexCoord2(1, 0);
GL::Vertex2(w, h);
GL::TexCoord2(1, 1);
GL::Vertex2(w, 0);
GL::TexCoord2(0, 1);
GL::Vertex2(0, 0);
GL::End();
GL::Disable(EnableCap::Texture2D);
if (ROI[0].x!=0||ROI[0].y!=0){
GL::Color3(Color::Red);
GL::Begin(BeginMode::Points);
GL::Vertex2(ROI[0].x,ROI[0].y);
GL::End();
}}
Что я должен изменить в своем коде? Я не могу достичь этого ….
Я нашел ответ. Кажется, что цвет также относится к текстурам при связывании их, поэтому мне просто нужно было добавить GL::Color3(Color::White)
перед нанесением текстуры.
Других решений пока нет …