본문 바로가기

분류 전체보기104

Chapter 5.1 Phong Shader CACHE *m = reserveCache( VERTEX_SHADER_PRG, true );if( m ) { if( !ShaderManager::ShaderCompile( program->VertexShader, ( char * )m->buffer, 1 ) ) exit( 1 ); freeCache( m );}m = reserveCache( FRAGMENT_SHADER_PRG, true );if( m ) { if( !ShaderManager::ShaderCompile( program->FragmentShader, ( char * )m->buffer, 1 ) ) exit( 2 ); freeCache( m );}if( !ProgramManagerObj->ProgramLink( progra.. 2025. 3. 24.
Chapter 5.0 Vertex lighting Gouraud Shader는 조명을 계산해서 부드러운 음영(Smooth Shading)을 만드는 셰이딩 기법.  Gouraud Shading VS Phong Shading조명 계산 위치**정점(Vertex)**에서 조명 계산픽셀(Fragment)**마다 조명 계산보간(interpolation)조명 결과(색상)를 보간법선(Normal)**을 보간 → 픽셀에서 조명 계산성능빠름 (정점 수 적을수록 빠름)느림 (픽셀마다 계산하니까 연산 많음)품질낮음 (하이라이트 등 디테일 손실 있음)높음 (부드럽고 정확한 조명 효과)  INIT// Get Material property uniform variableschar MaterialAmbient = ProgramManagerObj->ProgramGetUniformL.. 2025. 3. 24.
Chapter 4. OBJ Loader https://github.com/dlgmlals3/OpenGLES3.0_Example/blob/main/Chapter_4/app/src/main/cpp/Scene/ObjLoader.cpp OpenGLES3.0_Example/Chapter_4/app/src/main/cpp/Scene/ObjLoader.cpp at main · dlgmlals3/OpenGLES3.0_ExampleContribute to dlgmlals3/OpenGLES3.0_Example development by creating an account on GitHub.github.comObjLoader.cpp 참고하시면 됩니다.OBJ Loader 란OBJ Loader는 Wavefront OBJ 파일을 읽어 들여서 3D 모델 데이터를 프로그.. 2025. 3. 8.
Chapter 3.3 Primitive Restart < Skip > Primitive Restart는 OpenGL에서 인덱스 기반 드로우 호출에서 하나의 프리미티브를 종료하고 새로운 프리미티브를 시작할 수 있도록 해주는 기능입니다.보통 **GL_TRIANGLE_STRIP**이나 **GL_LINE_STRIP**와 같은 프리미티브를 렌더링할 때, 특정 인덱스 값을 만나면 현재 프리미티브가 종료되고 새로운 프리미티브가 시작됩니다.이렇게 하면 드로우 호출을 줄이고 복잡한 구조를 하나의 인덱스 배열로 관리할 수 있습니다. Primitive Restart의 작동 원리Primitive Restart 활성화: glEnable(GL_PRIMITIVE_RESTART) 또는 glEnable(GL_PRIMITIVE_RESTART_FIXED_INDEX)를 사용하여 활성화합니다.Restart 인.. 2025. 2. 24.