Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
F
FOSS-final_project
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
jochangmin
FOSS-final_project
Commits
89b80476
Commit
89b80476
authored
3 years ago
by
jcm
Browse files
Options
Downloads
Patches
Plain Diff
t
parent
1fb7f301
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
README.md
+114
-1
114 additions, 1 deletion
README.md
with
114 additions
and
1 deletion
README.md
+
114
−
1
View file @
89b80476
# FOSS-final_project
# opengl을 프로젝트에 추가하고 삼각형을 그려보자
### opengl을 사용하기 위해서는 우선 opengl과 그 사용을 편하게 해줄 라이브러리를 프로젝트에 추가해야 한다.
### 이 프로젝트에서 사용할 패키지는 glew,glfw,glm이다.
### 우선 프로젝트폴더에 include폴더와 lib폴더를 추가해 준다.

### 다음으로 비주얼 스튜디오에게 사용할 헤더파일과 라이브러리가 있는 폴더의 위치를 알려줘야 하는데,
### 먼저 include 디렉토리의 위치를 알려주자.
### 프로젝트 속성 -> C/C++메뉴의 additional Includde Directories에 헤더파일을 넣을 위치를 알려준다.

### 다음으로 lib 디렉토리의 위치를 알려줘야 하는데,
### 프로젝트 속성 -> Linker ->General 메뉴의 Additional Library Directories에 아래 사진과 같이 프로젝트 폴더의 아래로 위치를 정해주면 된다.

### 프로젝트디렉토리에 다운받을 라이브러리와 헤더파일을 위치시킬 위치를 잡고 해당 위치를 컴파일러에게 알려주는 과정이 끝났다.
### 이제 실제로 사용될 라이브러리들을 다운받고 프로젝트로 이동시키는 과정을 거쳐야 한다.
### 우선 glew부터 설치해보자.
### http://glew.sourceforge.net/ 해당 사이트에서 glew를 받을 수 있다.

### 해당 버튼을 눌러 헤더파일과 라이브러리를 다운받는다.

### 다운받은 zip파일을 압축해제하면 다음과 같은 디렉토리가 나오는데,
### include폴더에 있는 GL폴더를 위에서 만들었던 프로젝트의 include폴더아래로 옮겨준다.
### 마찬가지로 lib\Release\Win32 아래에 있는 lib파일들을 프로젝트의 lib폴더 아래로 옮겨준다.
### glew는 추가적으로 dll파일이 필요하기 때문에 dll파일을 옮겨주는 작업도 진행한다.
### 압축을 푼 폴더의 bin\Release\Win32에 있는 glew32.dll을 운영체제가 설치된 드라이브의 windows\system32폴더와 \Windows\SysWOW64 폴더에 옮겨준다.
### 다음으로 glfw를 설치하자.
### https://www.glfw.org/download.html 해당 사이트에서 glfw를 받을 수 있다.

### 위의 사진에 나와있는 버튼을 눌러 바이너리파일을 받는다.

### 다운받고 압축을 풀면 위 사진과 같은 디렉토리가 보일텐데,
### 이 프로젝트에 필요한 것은 비주얼스튜디오의 버전과 맞는 lib파일과 include 폴더 아래에 있는 헤더파일이다.
### include폴더 아래에 있는 GLFW폴더를 우리 프로젝트의 include폴더 아래로 옮겨주고,
### 자신의 비주얼스튜디오 버전과 맞는 lib폴더를 찾아 해당 폴더 아래에 있는 glfw3.lib파일을 프로젝트의 lib폴더 아래로 옮겨준다.
### 마지막으로 glm을 설치하자.
### https://github.com/g-truc/glm/tags 해당 사이트에서 glm을 받을 수 있다.

### 다운로드 버튼을 눌러 glm을 다운받는다.
### 다운받은 zip파일을 압축을 해제하면,

### 위와 같은 파일들이 나올텐데, 이 프로젝트에 필요한 파일은 glm폴더 아래에 있는 헤더파일들이다.
### glm폴더를 프로젝트의 include폴더 아래로 옮겨 모든 파일을 프로젝트에 추가한다.
### 필요한 파일들은 모두 프로젝트폴더 아래에 추가가 되었다.
### 하지만 바로 프로젝트를 시작할 수는 없고, 비주얼 스튜디오가 이를 사용하기 위해서는 어떤 라이브러리를 사용할지 추가적인 정보가 필요하다.

### 프로젝트속성 -> Linker -> Input -> Additional Dependencies에 추가해주면 되는데,
### 우리가 추가했던 lib파일은 glew32.lib, glfw3.lib가 있고 opengl을 사용할 예정이므로 opengl32.lib까지 추가해준다.
# 삼각형을 그려보자.
### 프로젝트를 시작하기에 앞서 필요한 사전작업은 모두 끝났으니 이제 삼각형을 그려보자.
### 삼각형을 그리기에 앞서 윈도우를 띄워줘야 하는데, glfw를 사용하면 이 과정이 아주 짧은 코드로 끝난다.

### glfw의 초기화까지 포함해서 3줄의 코드면 윈도우를 띄울 수 있다.
### 하지만 윈도우를 띄우자 마자 프로세스가 종료되어버린다.
### 사용자가 요청하기 전 까지 프로세스를 유지하기 위해 다음과 같은 코드를 작성한다.

### 무한루프를 돌되 사용자가 요청하면 무한루프를 빠져나와 프로세스가 종료된다.
### glfwSwapBuffers는 기존의 화면과 새로 그릴 화면을 교체하는 것으로, 화면이 찢기는 현상인 테어링을 막기 위한 코드이다.
### 화면을 완전히 그린 후에 화면을 교체하게 되므로 사용자에게는 그리는 도중의 과정이 보여지지 않는다.
### 이제 삼각형을 그리기 위한 삼각형클래스를 만들어보자.

### 전체 코드는 다음과 같다.
### 우선 m_vertexBuffer는 실제 정점들의 gram에 작성된 정점의 정보를 담고 있는 버퍼에 대한 인덱스라고 생각하면 편하다.
### vertices는 vertexBuffer를 작성하기 위한 삼각형의 정점정보이다.
### Init함수는 vertexBuffer를 작성하기 위해, Draw함수는 실제로 삼각형을 그릴 때 사용된다.
### 이제 이 삼각형클래스를 이용해 삼각형을 그려보자.

### 코드는 위와 같다.
### 삼각형오브젝트를 생성하고, 정점에 대한 정보를 준 뒤 vertexBuffer를 만드는 Init함수를 호출한다.
### vertices의 요소는 순서대로 x y z정보를 가리키고 있고, 3묶음이므로 삼각형의 정점 정보를 표현할 수 있다.
### 위에서 작성한 무한루프를 수정하여 매 반복마다 삼각형을 그리도록 코드를 작성한다.

### 삼각형 두 개를 그리도록 코드를 수정했다.
### 빌드 후 프로그램을 실행시키면,

### 위와 같이 삼각형 두개가 그려진 것을 볼 수 있다.
# 느낀점
### 처음에는 DirectX로 프로젝트를 기획했었는데, 내 기억보다 훨씬 방대한 초기화코드에 당황했다.
### 코드의 방대함과 스텐실버퍼, z버퍼, 스왑체인 등 우리 프로젝트에서 다루기에는 너무 깊고 지엽적인 요소가 많은 데다가
### 오픈소스가 아니므로 우리 과목의 목표에 부합하지 않는 점을 고려하여 Opengl로 프로젝트의 목표를 변경하게 되었다.
### 이 프로젝트를 진행하며 마크다운 양식에 조금 더 익숙해질 수 있는 기회가 된 것 같다.
### 마크다운문서에 이미지가 들어갈 수 있다는 사실도 처음 깨닫고, 글씨의 크기를 앞글자 하나로 변경이 가능한 점도 신기했다.
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment