Signature: glClearColor( red , green , blue , alpha )
Parameters :
Variables
Type
Optional
defaults
Description
red
GLfloat
X
rgb color에서의 red
green
GLfloat
X
rgb color에서의 green
blue
GLfloat
X
rgb color에서의 blue
alpha
GLfloat
X
투명도
return :
실제 rgb color는 각 색별로 0~255 의 범위를 가지지만 parameter 지정 시에는 0~1 범위로 변환하여 입력한다. 따라서 0으로 갈 수록 해당 색이 영향이 없어지고 1로 갈수록 커진다.
>> glClear
Purpose : buffer를 지정된 mask 값으로 지운다.
Signature: glClear( mask )
Parameters :
Variables
Type
Optional
defaults
Description
mask
GL -bitfield
X
buffer를 지우는데 사용될 mask의 비트 연산(Bitwise OR). 해당 값에 따라 어떤 버퍼를 지울 것인지 결정된다. | (파이프 문자)를 통해 여러 mask를 동시에 입력 가능하다.
return :
mask : Opengl에서 제공하는 상수(Constant)
Signature
Description
GL_COLOR_BUFFER_BIT
색상 버퍼 (glClear함수에서는최근 활성화 된 색상 버퍼를 지운다.)
GL_DEPTH_BUFFER_BIT
깊이 버퍼
GL_STENCIL_BUFFER_BIT
스텐실 버퍼
GL_ACCUM_BUFFER_BIT 상수는 opengl 3.0부터 사라졌다.
>> glUseProgram
Purpose : 현재 Rendering 상태의 일부로 입력받은 프로그램 Object를 설치한다.
Signature: glUseProgram( program )
Parameters :
Variables
Type
Optional
defaults
Description
program
GLuint
X
현재 Rendering 상태에서 실행될 프로그램의 handle 값.
return :
>> glDeleteProgram
Purpose : 프로그램을 삭제한다.
Signature: glDeleteProgram( program )
Parameters :
Variables
Type
Optional
defaults
Description
program
GLuint
X
삭제 할 프로그램의 handle 값.
return :
>> glDrawArrays
Purpose : 최근에 바인딩 된 VAO를 통해 프리미티브(Primitives)를 렌더링 한다.
Signature: glDrawArrays( mode, first, count )
Parameters :
Variables
Type
Optional
defaults
Description
mode
GLenum
X
랜더링할 프리미티브의 종류를 명시. GL에서 제공하는 상수(constants)를 사용한다.
first
GLint
X
활성화된 Vertex data에서 시작 index 명시.
count
GLsizei
X
랜더링 할 index 수를 명시. (vertex data의 갯수)
return :
mode 옵션
Signature
Description
GL_POINTS
각 Vertex를 화면에 렌더링될 점으로 취급.
GL_LINE_STRIP
각 Vertex이 선분으로 연결된 열린 연결 선 그림. 첫번째 Vertex과 마지막 Vertex은 자동으로 연결되지 않음.
GL_LINE_LOOP
각 Vertex이 선분으로 연결된 닫힌 연결 선 그림. 첫번째 Vertex과 마지막 Vertex은 자동으로 연결됨.
GL_LINES
각 Vertex 쌍을 별도의 선분으로 취급. 2개 이상의 Vertex 명시 필요.
GL_LINE_STRIP_ADJACENCY
GL_LINES_ADJACENCY
GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
GL_TRIANGLES
Vertex의 각 트리플 세트를 단일 삼각형으로 취급. 개별 삼각형 프리미티브는 연결 되지 않음.
GL_TRIANGLE_STRIP_ADJACENCY
GL_TRIANGLES_ADJACENCY
GL_PATCHES
해당 함수는 현재 활성화 된 Sahder, VAO 에 저장된(reference 된) Vertex Attribute 속성, BO의 Vertex Data를 사용하여 프리미티브를 랜더링 하고 screen 에 출력한다.
* Vertex Buffer Object(VBO) 와 Vertex Array Object(VAO) Vertex Buffer Object : 1차원 배열로 각 Vertex의 Attributes data 가 저장되는 개체. Vertex Array Object : Vertex Attribute Array가 저장되는 개체. 예시) 삼각형의 VBO - 삼각형의 각 Vertex 의 위치, 색 데이터 등이 저장 삼각형의 VAO - 위치 Attribute Array, 색 Attribute Array 등이 저장
VAO는 각 Vertex Attribute Array 가 사용할 데이터(VBO)와 규칙( Shader )의 reference를 저장하지만 데이터를 직접 가지고 있지는 않는다. glVertexAttribPointer 함수를 통해 어떻게 VBO를 해석할지 최초 한번 지정 해 준 후 실제 오브젝트를 그려야 할때는 해당하는 VAO를 바인딩 해준 후 사용하면 된다.
>> glGenVertexArrays
Purpose : VAO의 이름(ID)을 배열로 생성(Generate)한다.
Signature: glGenVertexArrays( n, arrays )
Parameters :
Variables
Type
Optional
defaults
Description
n
GLsizei
X
생성할 VAO의 ID 수
arrays
GLu -int *
○
None
생성된 VAO의 ID 가 저장될 배열 위치
return :
arrays 파라미터는 배열의 pointer 인데 python 에서는 pointer가 없다. 그럼 어떻게 쓴다는 건지 잘 모르겠다. arrays 파라미터에 그냥 배열을 넣어봤는데 배열 수 만큼 id가 생성 되는 것 같고 n 은 배열의 길이 만큼 지정을 해줘야 한다.
glGenVertexArrays 함수를 통해 생성된 id는 int형 정수 중 무작위로 생성된다. glDeleteVertexArrays 함수를 호출하여 지워야 한다.(자동으로 지워지거나 하지 않는다.) 한 번 생성된 id는 그 id를 삭제하더라도 동일한 id가 다시 생성되지 않는다.
>> glDeleteVertexArrays
Purpose : VAO 삭제
Signature: glDeleteVertexArrays( n, arrays )
Parameters :
Variables
Type
Optional
defaults
Description
n
GLsizei
X
삭제할 VAO의 수
arrays
GLu -int *
X
삭제할 VAO의 ID 가 저장된 배열 위치
return :
>> glBindVertexArray
Purpose : 생성된 VAO를 GPU에 바인딩 한다.
Signature: glBindVertexArray( array )
Parameters :
Variables
Type
Optional
defaults
Description
array
GLuint
X
바인딩할 VAO 의 id.
return :
쉽게 생각하면 지정된 VAO를 GPU에서 사용할 수 있도록 활성화 해주는 함수이다. 이 함수는 VAO의 Id가 glGenVertexArrays 통해 생성되어 있어야만 돌아간다.
>> glVertexAttribPointer
Purpose : Vertex Attribute Data 배열을 정의 한다. ( Vertex Attribute Data를 어떻게 해석/사용 할것 인지 정의)
설정할 Vertex Attribute 의 index. (어떤 Vertex Attribute로 명시할 것인지 index로 지정) Vertex 데이터가 Vertex shader의 어떤 Vertex 속성에 연결되는지 명시. Vertex shader의 location 에 해당한다.
size
GLint
X
Vertex Attribute 의 크기 명시. OpenGL에서는 한 속성당 4차원 벡터까지만 다루므로 최대값은 4이다. ex) 위치 속성의 경우 3차원 벡터이므로 3이 들어간다.
type
GL enum
X
Vertex Attribute 의 데이터 타입 명시. GL에서 제공하는 상수(constants)를 사용한다.
nomalized
GLbool
X
Vertex Attribute의 데이터 정규화 옵션. 데이터들이 양수 범위 안에 있을 경우 0~1, 음수 범위 안에 있을 경우 -1~1 사이로 정규화 한다. GL_TRUE : 정규화 진행 / GL_TRUE : 정규화 하지 않음
stride
GLsizei
X
다음 Vertex Attribute 과의 거리.(byte)
pointer
const GL void *
X
VBO에서 Vertex Attribute가 시작되는 위치.
return :
type 옵션
Signature
Description
Signature
Description
GL_BYTE
GL_FLOAT
GL_UNSIGNED_BYTE
GL_DOUBLE
GL_SHORT
GL_FIXED
GL_UNSIGNED_SHORT
GL_INT_2_10_10_10_REV
GL_INT
GL_UNSIGNED_INT_2_10_10_10_REV
GL_UNSIGNED_INT
GL_UNSIGNED_INT_10F_11F_11F_REV
GL_HALF_FLOAT
VBO 구조와 parameters 예시
이 함수를 실행 하면 VAO에 OpenGL BUFFER에 현재 바인딩 되어 있는 VBO의 reference를 저장한다. 그러므로 함수 실행 전 BO 바인딩이 선행 되어야 한다.
정리 하자면, 이 함수는 현재 바인딩 된 VBO를 어떻게 사용해야 하는지 규칙을 지정하고 Shader와 BO 간에 Vertex Attribute 구성을 연결하는 역할을 한다.
>> glEnableVertexAttribArray
Purpose : Vertex Attribute Data 배열을 활성화 한다.
Signature: glEnableVertexAttribArray( index )
Parameters :
Variables
Type
Optional
defaults
Description
index
GLuint
X
활성화 할 Vertex Attribute 의 index. (어떤 Vertex Attribute를 활성화 할 것인지 index로 지정) Vertex shader의 어떤Vertex 속성을 활성화 할것인지 명시. Vertex shader에서 location 에 해당한다.
return :
기본적으로 Vertex Attribute 모두 비활성화 되어 있으므로 사용전 꼭 활성화 시켜주어야 한다.
>> glDisableVertexAttribArray
Purpose : Vertex Attribute Data 배열을 비활성화 한다.
Signature: glDisableVertexAttribArray( index )
Parameters :
Variables
Type
Optional
defaults
Description
index
GLuint
X
비활성화할 Vertex Attribute 의 index. (어떤 Vertex Attribute를 비활성화할 것인지 index로 지정) Vertex shader의 어떤Vertex 속성을 비활성화할것인지 명시. Vertex shader에서 location 에 해당한다.
□ VBO ( Vertex BufferObject)
VBO 자체는 특별한 규칙 없는 1차원 배열이다. 다른 함수들을 통해 이 배열을 실제로 어떻게 이용할지 결정한다. ( ex) glVertexAttribPointer)
>> glGenBuffers
Purpose : VBO의 이름(ID)을 배열로 생성(Generate)한다.
Signature: glGenBuffers( n, arrays )
Parameters :
Variables
Type
Optional
defaults
Description
n
GLsizei
X
생성할 VBO의 ID 수
arrays
GLu -int *
○
None
생성된 VBO의 ID 가 저장될 배열 위치
return :
glGenBuffers 함수를 통해 생성된 id는 int형 정수 중 무작위로 생성된다.glDeleteBuffers함수를 호출하여 지워야 한다.(자동으로 지워지거나 하지 않는다.) 한 번 생성된 id는 그 id를 삭제하더라도 동일한 id가 다시 생성되지 않는다.
>> glDeleteBuffers
Purpose : VBO 삭제
Signature: glDeleteBuffers( n, arrays )
Parameters :
Variables
Type
Optional
defaults
Description
n
GLsizei
X
삭제할 VBO의 수
arrays
GLu -int *
X
삭제할 VBO의 ID 가 저장된 배열 위치
return :
>> glBindBuffer
Purpose : 생성된VBO를 GPU에 바인딩 한다.
Signature: glBindBuffer( target, buffer )
Parameters :
Variables
Type
Optional
defaults
Description
target
GLenum
X
VBO가 바인딩 되는 target 지정. GL에서 제공하는 상수(constants)를 사용한다.
buffer
GLuint
X
바인딩할 VBO ID.
return :
target 옵션
Variables
Description
Variables
Description
GL_ARRAY_BUFFER
GL_PIXEL_PACK_BUFFER
GL_ATOMIC_COUNTER_BUFFER
GL_PIXEL_UNPACK_BUFFER
GL_COPY_READ_BUFFER
GL_QUERY_BUFFER
GL_COPY_WRITE_BUFFER
GL_SHADER_STORAGE_BUFFER
GL_DRAW_INDIRECT_BUFFER
GL_TEXTURE_BUFFER
GL_DISPATCH_INDIRECT_BUFFER
GL_TRANSFORM_FEEDBACK_BUFFER
GL_ELEMENT_ARRAY_BUFFER
GL_UNIFORM_BUFFER
>> glBufferData
Purpose : VBO의 Data Store 생성 및 Initialize
Signature: glBufferData( target , size , data , usage )
Parameters :
Variables
Type
Optional
defaults
Description
target
GLenum
X
VBO target 지정. GL에서 제공하는 상수(constants)를 사용한다.
size
GLsizeiptr
○
None
생성될 VBO의 Data Store의 bytes 사이즈.
data
const GLvoid *
○
None
VBO Data Store에 복사할 데이터의 pointer. 명시하지 않은 경우 데이터가 복사 되지 않는다.
usage
GLenum
X
VBO Data Store의 사용 패턴 지정. (예상되는) GL에서 제공하는 상수(constants)를 사용한다.
return :
target 옵션
Variables
Description
Variables
Description
GL_ARRAY_BUFFER
GL_PIXEL_PACK_BUFFER
GL_ATOMIC_COUNTER_BUFFER
GL_PIXEL_UNPACK_BUFFER
GL_COPY_READ_BUFFER
GL_QUERY_BUFFER
GL_COPY_WRITE_BUFFER
GL_SHADER_STORAGE_BUFFER
GL_DRAW_INDIRECT_BUFFER
GL_TEXTURE_BUFFER
GL_DISPATCH_INDIRECT_BUFFER
GL_TRANSFORM_FEEDBACK_BUFFER
GL_ELEMENT_ARRAY_BUFFER
GL_UNIFORM_BUFFER
usage 옵션
Variables
Description
Variables
Description
GL_STREAM_DRAW
Data가 그려질 때마다 변경
GL_STATIC_COPY
GL_STREAM_READ
GL_DYNAMIC_DRAW
Data가 자주 변경
GL_STREAM_COPY
GL_DYNAMIC_READ
GL_STATIC_DRAW
Data가 거의 변경되지 않음
GL_DYNAMIC_COPY
GL_STATIC_READ
Vertex Data를 현재 바인딩 된 VBO 객체에 복사한다.
■ OpenGL.GL.Shaders
>> compileProgram
Purpose : Shader를 붙이고 검증 할 수 있는 새로운 프로그램을 생성한다.
Signature: compileProgram( shaders , named )
Parameters :
Variables
Type
Optional
defaults
Description
shaders
X
생성된 프로그램에 붙일 임의의 수의 Shader. ',' 문자로 여러개의 Shader를 붙일 수 있다.
named
○
return :
shaders parameter 에는 compileShader 함수를 통해 컴파일 된 shader가 들어온다.
shaders 인자가 유효성 검증에 통과하면 해당 shader 개체는 GL에서 삭제되고 검증 혹은 연결에 실패 하면 RuntimeError 가 발생한다.
>> compileShader
Purpose : 주어진 shaderType 에따라 shader source 가 컴파일 된다.