0
GLcontrol에서 텍스처를 그린 상태에서 그 위에 점을 그립니다. 대신, 나는 그려야 할 점의 색으로 설정된 전체 텍스처를 얻습니다. 텍스처 형식을 비활성화하고 점 도면을 활성화해야하지만 솔루션에 도달 할 수없는 것 같아요.텍스처 위쪽의 드로잉 포인트 OpenGL
다음은 draw 함수입니다. 기본적으로 그릴 점은 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();
}
}
? 나는 그것을 달성 할 수 없습니다 ....
텍스처 환경 (glTexEnv로 설정)의 설정에 따라 정점 색상이 텍스처 색상을 변조 할 수 있습니다. 이것이 GL_MODULATE 모드입니다. 또 다른 모드 인 GL_DECAL이 있는데 이것은 정점 색상의 "꼭대기"에 텍스처를 그립니다. 주로 투명 영역이있는 텍스처와 함께 유용합니다. 그러나 오늘날 모든 것은 셰이더를 통해 발생하며 프로세스의 모든 단계에서 담당합니다 (고정 된 기능과 비교하여 몇 개의 스위치 만 사용할 수 있음). – datenwolf