41P
- glClearBufferfv()
void glClearBufferfv(
GLenum buffer, GLint drawbuffer, const GLfloat * value )
;- fv 접미사?
- floating point(F)를 갖는 vector(V). (OpenGL에서는 배열포인터를 벡터와 동일한 의미로 혼용)
- Example
- static const GLfloat green[] = {0.0f, 1.0f, 0.0f, 1.0f};
glClearBuffer(GL_COLOR, 0, green); - 윈도우 색을 Green 으로 설정
- buffer를 value로 Clear
- value는 RGBA 이다.
- drawBuffer는 지울 출력 버퍼가 여럿일 때.
42P
- Shader
- OpenGL 에서는 GLSL로 작성
- Vertex Shader Example
- #version 430 core
void main(void)
{
gl_Position = vec4(0.0, 0.0, 0.5, 1.0);
} - 쉐이더 버전 4.3, core 프로파일만 사용
- gl_로 시작하는 모든 변수는 OpenGL 일부며, 쉐이더간 연결 역할
- gl_Position은 vertex의 출력 위치를 나타냄
- 위 좌표는 vertex가 clip space?의 중앙에 위치하도록 함
- Fragment Shader Example
- #version 430 core
out vec4 color;
void main(void)
{
color = vec4(0.0, 0.8, 1.0, 1.0);
} - out 키워드로 color를 출력변수로 선언
- RGBA
46P
- VAO : Vertex Array Object
- OpenGL 파이프라인의 Vertex Fetch 스테이지를 나타내는 객체
- 입력을 버텍스 쉐이더에 공급하기 위해 사용
- 출력 전 1회 수행
- 생성
- glGenVertexArrays()
- VAO를 context에 attach
void glGenVertexArrays(
GLsizei n, GLuint *arrays)
;
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGenVertexArrays.xhtml- glBindVertexArray()
void glBindVertexArray(
GLuint array )
;- Example
- GLuint vertex_array_object_;
glGenVertexArrays(1, &vertex_array_object_);
glBindVertexArray(vertex_array_object_); - glDeleteVertexArrays(1, &vertex_array_object_);
47P
- glDrawArrays()
void glDrawArrays(
GLenum mode, GLint first, GLsizei count)
;
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glDrawArrays.xhtml- vertex들을 OpenGL 파이프라인에 보낸다.
- mode : 어떤 타입의 Primite를 렌더링 할 것인지 결정.
GL_POINTS
,GL_LINE_STRIP
,GL_LINE_LOOP
,GL_LINES
,GL_LINE_STRIP_ADJACENCY
,GL_LINES_ADJACENCY
,GL_TRIANGLE_STRIP
,GL_TRIANGLE_FAN
,GL_TRIANGLES
,GL_TRIANGLE_STRIP_ADJACENCY
,GL_TRIANGLES_ADJACENCY
andGL_PATCHES
- first : starting index
- count : number of indices (렌더링할 버텍스 개수)
- glPointSize()
void glPointSize(
GLfloat size)
;
https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glPointSize.xml- point를 한 픽셀보다 더 크게 그리도록
- size : pixel
50P
- vertex shader 안에서 여러 버텍스 생성하기
- {
const vec4 = vertices[3] = vec4[3](vec4(~), vec4(~), vec4(~));
gl_Position = vertices[gl_VertexID];
} - gl_vertexID
- 해당 시점에 처리 될 vertex index.
- glDrawArrays()에 입력으로 들어간 첫 번째 인자값부터 시작해서 count만큼 증가
댓글 없음:
댓글 쓰기