블로그 이미지
포도알77
IT 방랑기

calendar

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

Notice

2019.04.10 14:50 프로그래밍/C, C++

1. Visual Studio 2015와  OpenGL 사용

아래 글 참조

https://jcdgods.tistory.com/374  

 

[C/C++] 간단하게 Visual Studio 2015에 C++ OpenGL 설치하기

1. OpenGL 다운로드 OpenGL Windows 압축 파일 다운로드 OpenGL 홈페이지에서 윈도우 C++용 GLUT을 다운 받아서 원하는 위치에 압축을 푼다. 그냥 D드라이브가 편하니까 D:\glut에 저장하였다. 2. Visual Studio..

jcdgods.tistory.com

2. 코드

https://github.com/ChangdaeJeong/triangluation-openGL

위의 깃허브 참조  

 

ChangdaeJeong/triangluation-openGL

triangluation-openGL. Contribute to ChangdaeJeong/triangluation-openGL development by creating an account on GitHub.

github.com

3. 데모 영상

콘솔창 + OpenGL 영상 https://www.youtube.com/watch?v=pxCs9ynF_OA&feature=youtu.be 

 OpenGL 영상  https://www.youtube.com/watch?v=fBwQU2o17aQ  

4. 기타

Triangulation 할때, Upper & Lower Chain을 이미 알고 있다는 가정하에, 구현하였음.

초기 시작시 X-coordinate 순으로 점이 추가됨. 그 다음 Upper Chain은 초록색, Lower Chain은 파랑색으로 나타남.

여기서 Leftmost, Rightmost 점이 파란색인건 그냥 무시하기 바람.

어차피 알고리즘 자체에서 양 끝 점이 어느 체인에 포함되는지 여부는 딱히 필요없음.

Triangulation Pseudo Code는 아래와 같음.

known Upper & Lower chain
merge Upper & Lower chain ordered by X coordinate, Y coordinate asc
init stack, list
push 1st, 2nd points into stack
loop from 2 to n-1
	if the top point of the stack and ith point are in same chain
		stack.pop
		loop stack is not empty
			pts <- stack.top
			stack.pop
			if pts and ith point make a diagonal
				insert the diagonal into L
		push the last point which was saved in stack
		push ith point into stack
			
	otherwise
		while stack.size >= 1
			pts <- stack.top
			stack.pop
			temporalStack <- pts
			if pts and ith point make a diagonal
				insert the diagonal into L
		stack.pop
		recover stack from temporalStack
		push ith point into stack

  그리고 OpenGL은 글자 출력이 딱히 편리한게 아니라서, 스택의 상태나 리스트의 상태는 콘솔에 출력하였음. 참고.  

posted by 궁금한 포도알77
2019.04.10 14:46 프로그래밍/C, C++

1. OpenGL 다운로드

OpenGL Windows 압축 파일 다운로드

OpenGL 홈페이지에서 윈도우 C++용 GLUT을 다운 받아서 원하는 위치에 압축을 푼다.

그냥 D드라이브가 편하니까 D:\glut에 저장하였다.  

 

2. Visual Studio 프로젝트 만들기

비주얼 스튜디오를 켜고, Windows 32 console 프로젝트를 하나 생성한다. 그런 다음 솔루션 탐색기에서 해당 프로젝트를 우클릭하여, 속성으로 들어간다.

 

 

그런 다음 속성 페이지에서 우측 상단에 위치한 구성 관리자를 연다. 그런 다음 활성 솔루션 구성을 클릭하여, 새로 만들기를 한다. 새로 만들 솔루션 구성 이름은 아무거나, OpenGL_debug로 만들었다.

   

 

C/C++ 수정

C/C++ 일반탭 또는 VC++ 디렉터리에 들어가서 포함 디렉터리에 "D:\glut" (자신이 GLUT 압축을 푼 위치)를 포함한다.  

 

링커 수정

링커-일반 탭으로 들어가서 포함 디렉터리에 "D:\glut"(자신이 GLUT 압축을 푼 위치)을 추가한다.

링커-입력 탭으로 들어가서 추가 종속성에 "glut32.dll"을 추가한다.  

 

환경 변수 편집

환경 변수 편집으로 들어가서 Path 환경 변수에 "D:\glut"을 추가한다.  

그리고 VS 를 껏다켠다.  

아래의 openGL 코드를 실행하면, 정상적으로 동작할 것이다.

#include <glut.h>
void Display() {
	glClear(GL_COLOR_BUFFER_BIT);
	glBegin(GL_POLYGON);
	glVertex3f(-0.5, -0.5, 0.0);
	glVertex3f(0.5, -0.5, 0.0);
	glVertex3f(0.5, 0.5, 0.0);
	glVertex3f(-0.5, 0.5, 0.0);
	glEnd();
	glFlush();
}

int main() {
	glutCreateWindow("OpenGL Hello World!");
	glutDisplayFunc(Display);
	glutMainLoop();
	return 0;
}

 

 opengl 안되는 경우 증상

컴파일이 안되는 경우 : VS 구성 관리자의 glut 라이브러리 추가를 잘못 한것.

실행이 안되는 경우 : glut32.dll이 없다고 실행이 안되는 경우, 환경 변수 편집이 잘못 되었거나, VS 껐다 켜지 않은 것.

posted by 궁금한 포도알77
prev 1 next