Open GL 설치

Posted by 백창
2014. 9. 12. 16:55 개발/Open GL
반응형


 API 다운로드 및 설치



 Library

 Internet Address

 GL

GLU

GLAUX

ftp://ftp.microsoft.com/softlib/mslfiles/opengl95.exe 

 GLUT

http://user.xmission.com/~nate/glut.html


GLUT 다운로드 사이트 화면


glut-3.7.6-bin.zip 파일을 다운로드 한다.


압축 해제 후 각 파일을 다음 폴더에 넣는다.


64bit 운영체제 기준입니다.


Classification 

Folder Location

Files 

 Header File

C:\Program Files(x86)\Microsoft Visual Studio 12.0\VC\include\gl

gl.h

glaux.h

glu.h

glut.h

 Library File

C:\Program Files(x86)\Microsoft Visual Studio 12.0\VC\lib

glaux.lib

glu32.lib

glut32.lib

opengl32.lib

 Dynamic Link Library File

C:\Windows\System32

C:\Windows\SysWOW64

 glu32.dll

glut32.dll

opengl32.dll


추가할 DLL파일은 3개 인데 두개는 이미 존재한다고한다. 그래서 일단 추가하지 않았음



 프로젝트 생성





 코드 작성


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
32
33
34
35
36
37
38
39
#include <gl/glut.h>
#include <math.h>
 
#define    Pi    3.1415
 
void MyDisplay(){
    GLfloat Size[2], Angle;
 
    glClear(GL_COLOR_BUFFER_BIT);        //상태변수 설정, GL 버퍼를 초기화해라. 1번 칼라를 사용해라
    glColor3f(0.0, 0.0, 0.0);
 
    glGetFloatv(GL_POINT_SIZE_RANGE, Size);
 
    glPointSize(Size[0] * 10);
    glBegin(GL_POINTS);
 
    //계산
    for (Angle = 0.0; Angle <= 2.0*Pi; Angle += Pi / 20.0){
        glVertex3f(0.5*cos(Angle), 0.5*sin(Angle), 0.0);
    }
 
    glEnd();
    glFlush();
}
 
int main(int argc, char **argv){
 
    glutInit(&argc, argv);            //glut 라이브러리를 초기화 하고 윈도우와 연결하는 세션을 만들어라
 
    glutInitDisplayMode(GLUT_RGBA);  //윈도우의 기본 컬러모드를 RGBA로 설정
    glutInitWindowSize(500, 500);        //크기
    glutInitWindowPosition(0, 0);         //시작위치
    glutCreateWindow("Hello");           //타이틀
 
    glClearColor(1.0, 1.0, 1.0, 1.0);   //1번 칼라 (0~1 값을 가지고, 마지막 A는 불투명도 이다)
    glutDisplayFunc(MyDisplay);         //콜백함수 실행
    glutMainLoop();
    return 0;
}


 실습



반응형

'개발 > Open GL' 카테고리의 다른 글

정육면체 그리기  (0) 2014.11.21
도형 그리기 및 이동  (0) 2014.11.03
[빌드 오류] failure during conversion to COFF: file invalid or corrupt  (0) 2014.10.17
Menu & SubMenu 생성  (11) 2014.10.09
freeglut API 설치  (0) 2014.09.29

[게임] lightbot 게임 간단히 만들기

Posted by 백창
2014. 9. 3. 19:48 개발/C언어
반응형


 해커톤이란?


 '해킹(hacking)'과 '마라톤(marathon)'의 합성어다. 해커톤은 정보기술(IT) 기업에서 흔하게 활용되는데, 미국 소셜네트워크서비스 페이스북(Facebook)은 평소 직원들에게 밤새 음식과 간식을 제공하면서 아이디어와 생각을 직접 만들어 보게 하는 해커톤을 지속적으로 개최하여 많은 이득을 보았다.


 Lightbot


 유아용 소프트웨어 교육용 게임 Lightbot이다. 어린 아이들이 소프트웨어에 쉽게 접근할 수 있게 게임으로 소프트웨어의 특징을 나타낸 게임이다.



플레이 화면을 보면 마치 C언어를 짜듯이 프로시져와 메인 함수로 이루어진 UI를 볼 수 있다.



 구현


 이제 팀을 이루어 가장 자신있는 언어로 Lightbot 게임을 40여분 동안 제작하였다.

 4명이 팀을 이루었지만 소스코드는 단 한명이 작성을 해야하고 나머지 팀원은 여러 가지 의견을 제시하여 소스코드를 작성 하는 동시에 소스코드를 리뷰할 수 있게 진행되었다.


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <stdio.h>
int i;                //입력 받은 명령의 개수
int command[100];    //입력 받은 명령
int direction;        //캐릭터가 보는 방향
int x, y;            //x축 y축
 
int path[5][5] = {    //게임 맵
    { 2, 0, 1, 1, 1 },
    { 1, 0, 1, 1, 1 },
    { 1, 0, 1, 1, 1 },
    { 1, 0, 1, 1, 1 },
    { 1, 0, 0, 0, 3 }
};
 
/*게임 맵 출력*/
void printGame(){
    int i, j;
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 5; j++)
            printf("%d ", path[i][j]);
        printf("\n");
    }
}
/*방향에 따른 전진*/
void foward()
{
    if (direction == 0&&y<4)
        y++;
    else if (direction == 1 && x<4)
        x++;
    else if (direction == 2 && 0<y)
        y--;
    else if (direction == 3 && 0<x)
        x--;
    path[x][y] +=1;
}
/*방향 전환*/
void turnLeft()
{
    direction=(direction - 1)%4;
}
void turnRight()
{
    direction = (direction + 1) % 4;
}
/*목적지 도달*/
void lightOn()
{
    path[x][y] -= 3;
}
/*성공여부 측정*/
int checkGame()
{
    int a, b;
    for (a = 0; a < 5; a++)
    {
        for (b = 0; b < 5; b++)
        {
            if (path[a][b] != 1)
                return -1;
        }
    }
    return 1;
}
/*명령 수행*/
void action()
{
    int a;
    for (a = 0; a <= i; a++)
    {
        if (command[a] == 1)
            foward();
        else if (command[a] == 2)
            turnLeft();
        else if (command[a] == 3)
            turnRight();
        else if (command[a] == 4)
            lightOn();
        else if (command[a] == -1)
        {
            if(checkGame()==-1)
                printf("실패\n");
            else printf("성공\n");
        }
        printf("\n");
        printf("<%d번째>\n", a + 1);
        printGame();
    }
}
 
void main(void){
 
    printGame();
    printf("\n명령어를 입력해주세요(Foward: 1, LeftTurn: 2, RightTurn: 3, lightOn: 4, Exit: -1): ");
    for (i = 0;; i++)
    {
        scanf_s("%d", &command[i]);
        if (command[i] == -1)
        {
            break;
        }
    }
    path[x][y] -= 1;
    action();
}
//1 3 1 1 1 1 2 1 1 1 4 -1


 결과


 먼저, 게임 맵이 나타나고 2에서 시작하여 3으로 이동하고, 0이 이동할 수 있는 경로이다. 올바른 경로로 이동하면 모든 배열이 1이되어 게임이 종료된다.

프로그램을 실행하여 정답에 맞는 명령을 적으면 다음과 같이 성공 화면이 나타난다.



반응형

[myBatis] selectKey 사용

Posted by 백창
2014. 9. 3. 09:52 개발/Spring
반응형


 개요


selectKey의 사용법에 대해 알아보자


 동적 sql SelectKey


 insert 시 조건에 따라 다른 값을 넣고자 하면 selectKey를 이용하여 전달된 자바 빈 또는 map에 원하는 값을 지정할 수 있다.



 keyProperty 이 id로 value 값에 #{id} 형식으로 사용한다.


 주의사항


1. insert 문에서만 사용이 가능하다.

2. insert문 한 개에 한 개의 selectKey만 사용이 가능하다.

반응형

'개발 > Spring' 카테고리의 다른 글

spring Framework 파일 업로드  (0) 2014.09.29

[알고리즘] N-여왕말 문제(몬테칼로 추정치 - 되추적)

Posted by 백창
2014. 8. 26. 19:45 개발/C언어
반응형

 개요


 몬테칼로 추정치는 해답을 모두 찾기 위해서 검사하리라 생각되는 마디의 총 개수를 추정한 것이다. N-여왕말 문제를 백트래킹 기법으로 풀어 몬테칼로 추정값을 구해보도록하자.


 소스





 결과



반응형

'개발 > C언어' 카테고리의 다른 글

[게임] lightbot 게임 간단히 만들기  (0) 2014.09.03
[알고리즘] hamiltonian (되추적)  (0) 2014.08.26

[알고리즘] hamiltonian (되추적)

Posted by 백창
2014. 8. 26. 19:41 개발/C언어
반응형

 해밀튼의 회로 문제




 소스






 정답


 위 문제에 정답은 없다. 가 정답 

반응형