나만의 공부 노트

삼각형 그리기 본문

Graphics/OpenGL

삼각형 그리기

va95 2023. 12. 27. 02:54

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: 딱 한번만 세팅되고 몇번 쓰다 버려질 예정

순서

  • 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)

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)

'Graphics > OpenGL' 카테고리의 다른 글

Texture  (0) 2023.12.29
GLSL  (0) 2023.12.28
초기 세팅과 관련해서 공부한 내용  (1) 2023.12.26