OpenGL의 다각형에 텍스처로 픽셀을 그리는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/664698

  •  21-08-2019
  •  | 
  •  

문제

C ++ OpenGl에서는 각 픽셀을 수동으로 (텍스처로 가정하여) 간단한 정사각형 원시 또는 실제로 사각형을 형성하는 2 개의 다각형에 그려두고 싶습니다.

어디서부터 시작 해야할지 또는 어떤 구절을 찾을지 모르겠습니다. 텍스처 매핑 또는 텍스처 생성을 찾고 있습니까? 대부분의 예는 파일에서로드하는 것이지만 그렇게하고 싶지는 않습니다.

나는 OpenGL 프로그래밍 가이드 북을 읽으려고했지만 OpenGL에 익숙하지 않은 미로입니다. 도와주세요.

도움이 되었습니까?

해결책

glteximage2d를 자세히 살펴보십시오. 이것은 2D 텍스처를 위해 OpenGL에 이미지를로드하는 호출입니다.

glteximage2d는 실제로 이미지의 픽셀 데이터에 대한 원시 포인터를 가져옵니다. 메모리를 직접 할당하고 이미지 데이터를 직접 설정 한 다음이 기능을 호출하여 이미지를 OpenGL로 전달할 수 있습니다.

일단 텍스처를 만든 후에는 삼각형이 그 질감을 사용할 수 있도록 텍스처를 상태에 바인딩 할 수 있습니다.

OpenGL에는 파일에서 텍스처로 사용되는 이미지가 직접 사용되는 이미지가 필요하지 않습니다. 텍스처에 대한 좋은 자원은 될 수 있습니다 이 Gamedev 기사에서 발견되었습니다.

다른 팁

당신이 그리는 사각형이 2 차원이고 회전하지 않으면, 당신은 gldrawpixels. 다각형을 사용하지 않고 버퍼에 직접 픽셀의 직사각형 영역을 그릴 수 있습니다.

당신이 새롭다면 튜토리얼에서 시작하는 것이 좋습니다. Nehe.

그 동안 주목하십시오 glteximage2d () 로드 할 픽셀에 대한 포인터를 가져 가면 호출 후 해당 데이터의 변경 사항에 신경 쓰지 않습니다. 즉, 데이터는 실제로 지정한 메모리 영역에서로드되며 OpenGL은 자체 사본을 만듭니다.

즉, 데이터가 변경되면 glteximage2d () 호출을 다시 사용하거나 다음과 같은 것을 사용해야합니다. gltexsubimage2d () 부분 업데이트를 수행합니다. 테스트 및 프로파일 링을 권장하여 하위 텍스트 업데이트가 빠르게 진행되는지 확인하는 것이 좋습니다. 실제 드라이버가 해당 케이스에 대해 어떻게 최적화되는지 확실하지 않습니다.

나를 향한 Reed Copsey에게 감사합니다 glTexImage2D. 이것은 매우 간단합니다. glubyte 배열을 glTexImage2D 기능 (텍스처를 바인딩하는 데 필요한 모든 기능 등). 이 정확한 코드 스 니펫을 시도하지는 않았지만 제대로 작동해야합니다. 배열 요소는 행, 열 및 채널의 직렬 버전을 나타냅니다.

int pixelIndex = 0;
GLubyte pixels[400];

for (int x = 0; x < 10; x++)
{
    for (int y = 0; y < 10; x++)
    {
         for (int channel = 0; channel < 4; channel++)
         {
             // 0 = black, 255 = white
             pixels[pixelIndex++] = 255;
         }
    }
}

glTexImage2D(
    GL_TEXTURE_2D, 0, GL_RGBA, SIZE, SIZE, 0,
    GL_RGBA, GL_UNSIGNED_BYTE, pixels);

OpenGL 책에서 흑백 이미지에 2D 배열을 사용할 수 있으므로 3D 배열도 사용할 수 있다고 가정합니다.

당신이 찾고있는 것은 일반적으로 "렌더링 텍스처"라고합니다.

http://developer.nvidia.com/object/gdc_oglrtt.html

그 튜토리얼은 꽤 오래되었습니다. 이러한 확장 중 일부는 실제로 새로운 버전의 OGL에서 확장이 아니라고 생각합니다. 더 이상 도와 줄 수 없어서 죄송합니다. 나는 그래픽 API를 더 이상 직접 작업하지 않으며, 만약 내가 할 수 있다면 (확장 수프를 피하기 위해, 다른 이유로 나는 여기서 당신을 낳지 않을 것입니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top