- 쉐이더에서 읽기/쓰기 가능한 구조화된 스토리지 형식
- 대부분 이미지 데이터로 사용
- 2D 레이아웃을 가장 일반적으로 사용하지만, (1차원, 3차원, 배열, 정육면체 등)으로 생성 가능하다.
- 텍스쳐 생성 및 초기화
- [생성 - 바인딩 - 텍스쳐 스토리지 할당]
- Example
- GLuint texture;
- glGenTextures(1, &texture);
- // GL_TEXTURE_2D 바인딩 포인트를 사용하여 컨텍스트에 바인딩
- glBindTexture(GL_TEXTURE_2D, texture);
- glTexStorage2D(
GL_TEXTURE_2D, // 2D텍스쳐
1, // 1 밉맵레벨
GL_RGBA32F, // 32비트 부동소수점 RGBA 데이터(텍스쳐 내부 포맷)
256, 256); // 256*256 텍셀 - 텍스쳐 데이터 갱신
- Example
- float *data = new float[256 * 256 * 4];
- // data에 이미지 데이터 삽입 프로세스
- glTexSubImage2D(
GL_TEXTURE_2D, // 2D 텍스쳐
0, // 레벨 0
0, 0, // 오프셋 0, 0
256, 256, // 256 * 256 텍셀, 전체 이미지 덮어씀
GL_RGBA, // 4 Channel
GL_FLOAT, // 부동 소수점
data); - delete [] data;
- 텍스쳐 타깃과 타입
GL_TEXTURE_1D
,GL_TEXTURE_2D
,GL_TEXTURE_3D
,GL_TEXTURE_1D_ARRAY
,GL_TEXTURE_2D_ARRAY
,GL_TEXTURE_RECTANGLE
,GL_TEXTURE_CUBE_MAP
,GL_TEXTURE_CUBE_MAP_ARRAY
,GL_TEXTURE_BUFFER
,GL_TEXTURE_2D_MULTISAMPLE
orGL_TEXTURE_2D_MULTISAMPLE_ARRAY
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glBindTexture.xhtmlGL_TEXTURE_1D_ARRAY, GL_TEXTURE_2D_ARRAY
단일 객체로 합쳐진 텍스쳐 이미지 배열
GL_TEXTURE_BUFFER
1D 텍스쳐와 유사하지만 스토리지가 실제 버퍼 객체로 표현되는 특별한 텍스쳐 타입
1D 텍스쳐의 최대크기보다 훨씬 더 크다.
- GL_TEXTURE_2D_MULTISAMPLE
- 멀티 샘플 안티엘리어싱에서 사용
- 쉐이더에서 텍스쳐 읽기
- 텍스쳐는 쉐이더에서 샘플러 변수로 사용됨
- 2차원 텍스쳐를 나타내는 샘플러 타입은 sampler2D
- Example
- #version 430 core
- uniform sampler2D s;
- out vec4 color;
- void main(void)
- {
- color = texelFetch(s, ivec2(gl_FragCoord.xy), 0);
- }
- gl_FragCoord로 부터 구한 텍스쳐 좌표를 사용하여 유니폼 샘플러로부터 읽음.
gvec4 texelFetch(
gsampler2D sampler, ivec2 P, int lod )
;- lod: 밉맵 레벨 (1 레벨일 경우 0)
- 샘플러 타입
GLSL sampler OpenGL texture enum Texture type gsampler1D GL_TEXTURE_1D 1D texture gsampler2D GL_TEXTURE_2D 2D texture gsampler3D GL_TEXTURE_3D 3D texture gsamplerCube GL_TEXTURE_CUBE_MAP Cubemap Texture gsampler2DRect GL_TEXTURE_RECTANGLE Rectangle Texture gsampler1DArray GL_TEXTURE_1D_ARRAY 1D Array Texture gsampler2DArray GL_TEXTURE_2D_ARRAY 2D Array Texture gsamplerCubeArray GL_TEXTURE_CUBE_MAP_ARRAY Cubemap Array Texture
(requires GL 4.0 or ARB_texture_cube_map_array)gsamplerBuffer GL_TEXTURE_BUFFER Buffer Texture gsampler2DMS GL_TEXTURE_2D_MULTISAMPLE Multisample Texture gsampler2DMSArray GL_TEXTURE_2D_MULTISAMPLE_ARRAY Multisample Array Texture - 정수형 샘플러는 앞에 i를 붙이고, unsigned는 u
(ex. isampler2D, usampler2D)
2018년 4월 22일 일요일
5.5.[1-3] 텍스쳐 생성 및 초기화, 텍스쳐 타깃과 타입, 쉐이더에서 텍스쳐 읽기
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기