나만의 공부 노트
삼각형 그리기 본문
glClear
- State-setting function
- State가 OpenGL context에 저장됨
- glClearAccum(), glClearColor(), glClearDepth(), glClearIndex(), glClearStencil()
- State-using function
- OpenGL context에 저장된 State를 이용 glClear()
- OR 연산자 가능
GL_COLOR_BUFFER_BIT | 현재 색 쓰기에 사용할 수 있는 버퍼입니다. |
GL_DEPTH_BUFFER_BIT | 깊이 버퍼입니다. |
GL_ACCUM_BUFFER_BIT | 누적 버퍼입니다. |
GL_STENCIL_BUFFER_BIT | 스텐실 버퍼입니다. |
VAO(Vertex Array Object)
- void glGenVertexArrays(GLsizei n, GLuint *arrays)
- void glBindVertexArray(GLuint array)
- void glEnableVertexAttribArray(GLuint index)
- void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void * pointer)
- size : 변수 갯수(ex. 3 => vec3)
- type : 변수 타입(ex. float)
- pointer : offset
VBO(Vertex Buffer Object)
- void glGenBuffers(GLsizei n, GLuint* buffers)
- void glBindBuffer(GLenum target, GLuint buffer)
- target : GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER, etc..
- void glBufferData(GLenum target, GLsizeiptr size, const void* data, GLenum usage)
- usage : "STATIC | DYNAMIC | STREAM" && "DRAW | COPY | READ" 조합
- ex) GL_STATIC_DRAW
- GL_STATIC_DRAW: 딱 한번만 세팅되고 앞으로 계속 쓸 예정
- GL_DYNAMIC_DRAW: 앞으로 데이터가 자주 바뀔 예정
- GL_STREAM_DRAW: 딱 한번만 세팅되고 몇번 쓰다 버려질 예정
- usage : "STATIC | DYNAMIC | STREAM" && "DRAW | COPY | READ" 조합
순서
- VAO binding
- VBO binding
- vertex attribute setting
Shader
- GLuint glCreateShader(GLenum shaderType)
- shaderType : GL_VERTEX_SHADER, GL_FRAGMENT_SHADER, etc ..
- void glShaderSource(GLuint shader, GLsizei count, const GLchar **string, const GLint *length)
- void glCompileShader(GLuint shader)
- void glGetShaderiv(GLuint shader, GLenum pname, GLint *params)
- pname : GL_COMPILE_STATUS
- void glGetShaderInfoLog( GLuint shader, GLsizei maxLength, GLsizei *length, GLchar *infoLog)
- void glGetShaderiv(GLuint shader, GLenum pname, GLint *params)
Program
- void glAttachShader( GLuint program, GLuint shader)
- void glLinkProgram( GLuint program)
- void glGetProgramiv(GLuint program, GLenum pname, GLint *params)
- pname : GL_LINK_STATUS
- void glGetProgramInfoLog( GLuint program, GLsizei maxLength, GLsizei *length, GLchar *infoLog)
- void glGetProgramiv(GLuint program, GLenum pname, GLint *params)
'Graphics > OpenGL' 카테고리의 다른 글
Texture (0) | 2023.12.29 |
---|---|
GLSL (0) | 2023.12.28 |
초기 세팅과 관련해서 공부한 내용 (1) | 2023.12.26 |