본문 바로가기

전체 글92

Chapter 3.5 Primitive Restart Primitive Restart는 OpenGL에서 인덱스 기반 드로우 호출에서 하나의 프리미티브를 종료하고 새로운 프리미티브를 시작할 수 있도록 해주는 기능입니다.보통 **GL_TRIANGLE_STRIP**이나 **GL_LINE_STRIP**와 같은 프리미티브를 렌더링할 때, 특정 인덱스 값을 만나면 현재 프리미티브가 종료되고 새로운 프리미티브가 시작됩니다.이렇게 하면 드로우 호출을 줄이고 복잡한 구조를 하나의 인덱스 배열로 관리할 수 있습니다. Primitive Restart의 작동 원리Primitive Restart 활성화: glEnable(GL_PRIMITIVE_RESTART) 또는 glEnable(GL_PRIMITIVE_RESTART_FIXED_INDEX)를 사용하여 활성화합니다.Restart 인.. 2024. 10. 31.
Chapter 3.4 Instance 렌더링 #define MATRIX1_LOCATION 2#define MATRIX2_LOCATION 3#define MATRIX3_LOCATION 4#define MATRIX4_LOCATION 5void Cube::InitModel(){ // Create VBO size = 24*sizeof(float); glGenBuffers(1, &vId); glBindBuffer( GL_ARRAY_BUFFER, vId ); glBufferData( GL_ARRAY_BUFFER, size + size, 0, GL_STATIC_DRAW ); glBufferSubData( GL_ARRAY_BUFFER, 0, size, cubeVerts ); glBufferSubData( GL_ARRAY_.. 2024. 10. 30.
Chapter 3.3 VAO 사용하여 Grid 렌더링 이 코드는 격자를 OpenGL로 렌더링할 준비를 완료하는 함수입니다. 배열로 정점 및 인덱스 데이터를 설정한 후, 이를 OpenGL의 VBO, IBO, VAO에 바인딩하여 효율적으로 GPU에서 접근할 수 있게 합니다.void Grid::CreateGrid(GLfloat XDim, GLfloat ZDim, int XDiv, int ZDiv){ // Calculate total vertices and indices. GLuint vertexNum = 3 * (XDiv+1) * (ZDiv+1) * 2; GLuint indexNum = ((XDiv+1) + (ZDiv+1)) * 2; // Allocate required space for vertex and.. 2024. 10. 29.
Chatper 3.2 Grouping Uniform and Creating Buffers glBindAttribLocation vs glGetAttribLocationvoid glBindAttribLocation(GLuint program, GLuint index, const char* name);프로그램 링크 전에 사용속성의 위치를 지정(설정)하는 함수애플리케이션이 위치 값을 결정GLint glGetAttribLocation(GLuint program, const char* name);프로그램 링크 후에 사용속성의 위치를 조회(가져오는) 함수OpenGL이 자동으로 할당한 위치 값을 반환사용 예시:// 1. glBindAttribLocation 사용 GLuint program = glCreateProgram(); // 링크 전에 위치 지정 glBindAttribLocation(program,.. 2024. 10. 26.