2012-06-13 3 views
5

그래서 나는이 프로그램을 게임용으로 만들었고 좀 더 자동적으로 만드는 데 도움이 필요하다.C++ 이미지 조작

프로그램에서 이미지를 가져 와서 표시합니다. 나는 OpenGL의 텍스쳐에 대해 이렇게하고있다. 게임 스크린 샷을 찍을 때 일반적으로 약 700x400 정도입니다. 내 프로그램에 높이와 너비를 입력하고 공백을 추가하여 1024x1024 크기로 이미지 크기를 조정합니다. (더 나은 호환성을 위해 POT 텍스처로 만듭니다.) 원본 이미지는 왼쪽 상단 모서리에 있으며 (700,400) 나머지는 그냥 비어 있습니다. 누구든지이 용어를 알고 있습니까?) 그런 다음 내 프로그램에로드하고 모서리를 조정하여 (0,0)에서 (700,400)까지의 부분 만 표시되도록하십시오.

이렇게 이미지의 표시를 처리하는 방법입니다. 자, 저는 이것을 자동으로하고 싶습니다. 그래서 700x400 크기의 사진을 찍어 이미지의 너비와 높이 (700x400)를 얻는 프로그램으로 전달하고, 공백을 추가하여 1024x1024 크기로 조정 한 다음로드합니다.

누구나이 일을 할 수있는 C++ 라이브러리를 알고 있습니까? 나는 여전히 수동으로 스크린 샷을 찍을 것이다.

그림 (.bmp)을로드하고 텍스처로 변환하기 위해 Simple OpenGL Image Library (SOIL)를 사용하고 있습니다.

감사합니다.

답변

1

이미지를 올바르게 표시하기 위해 빈 공간을 추가하여 실제로 크기를 조정할 필요는 없습니다. 사실, 이미지를 .bmp 형식으로 저장하기 때문에 실제로는 너무 비효율적 인 방법입니다.

SOIL은 텍스처를로드 할 때 자동으로 빈 공간을 추가 할 수 있습니다. 아무 작업도하지 않고 그대로 파일을로드하려고 시도 할 수 있습니다. 토양 문서에서

:

자동 (GUI 요소 또는 시작 화면 에 대한 rectangluar 텍스처를로드 할 수

다음으로 큰 전력의-이 사이즈로 이미지 크기를 조정은 GL_ARB이 필요/EXT/NV_texture_rectangle)

어쨌든 텍스처를 사용하여 픽셀을 표시하지 않아도됩니다. 크레인. 나는 당신이 렌더링을 위해 쉐이더를 사용하지 않는다고 가정합니다 - 만약 모두가 고정 된 파이프 라인을 통과한다면, 그것은 훨씬 더 간단 할 glDrawPixels 함수가 있습니다. SOIL 통화를 SOIL_load_image으로 변경해야합니다.

+0

"이미지 크기를 다음으로 큰 2의 크기로 자동 조절"- 정말 "자동"이라는 단어를 놓쳤습니다. : D 나는 당신이 말한 것을 시도 할 것입니다. 감사! – Tuntuni

+0

크기를 조정하지 않고로드하려고 시도했지만 이상하게 보입니다. 나는 내 구석이 그들의 자리에 있음을 확신한다. 이미지는 회색 음영으로 변하고 크기를 조절하면 색상이 다시 증가합니다. SOIL_load_image 및 glDrawPixels 또는 링크에서 예를 들어 주시겠습니까? 감사. – Tuntuni

+0

아마도'SOIL_FLAG_POWER_OF_TWO' 또는'SOIL_FLAG_TEXTURE_RECTANGLE'을 시도해보십시오. –