0

我在 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();
            }


    }

在此处输入图像描述

我应该在我的代码中更改什么?我似乎无法实现它......

4

1 回答 1

3

我找到了答案。似乎颜色在绑定它们时也适用于纹理,所以我只需要GL::Color3(Color::White)在绘制纹理之前添加。

于 2013-03-13T12:10:32.673 回答