2017. 3. 5. 05:28

윈도우즈 응용 프로그램은 다수의 창을 포함하는 것이 보통


따라서 원한다면 각각의 창에 픽셀 포맷을 지정하는 것도 가능


각각의 창에 대해 한 번씩 SetPixel Format 함수를 호출


현재의 렌더링 창을 지정하는 방법을 구현


GDI 함수들이 이용하는 창 장치 컨텍스트의 개념이 OpenGL 환경에서는 렌더링 컨텍스트라 불리는 개념에 포함


장치 컨텍스트가 GDI를 위한 드로잉 모드와 명령을 기억하는 것처럼 렌더링 컨텍스트는 OpenGL 설정과 명령을 기억


wglCreateContext 함수를 이용하면 OpenGL 렌더링 컨텍스트를 만들 수 있음


이 함수는 올바른 픽셀 포맷을 가진 창의 장치 컨텍스트를 인자로 받으며 OpenGL 렌더링 컨텍스트의 데이터 타입은 HGLRC 이다


HGLRC hRC;

HDC hDC;


hRC = wglCreateContext(hDC);


렌더링 컨텍스트는 이를 만드는데 이용한 창과 호환


두 개의 창이 서로 다른 드로잉 모드나 원근 모드를 사용할 수 있으므로 응용 프로그램은 두 개 이상의 렌더링 컨텍스트 가질 수 있음


OpenGL 명령은 작업할 목적지 창을 알아야 하므로 한 스레드 당 하나의 렌더링 컨텍스만을 활성화 


활성화된 컨텍스트를 "현재 컨텍스트"


렌더링 컨텍스트는 디바이스 컨텍스트와 연결되며 결국 특정한 창과 연결


OpenGL 명령이 어느 창에 렌더링 해야 하는지 알 수 있다


하나의 창에서 다른 창으로 OpenGL 렌더링 컨텍스트를 바꿀 수도 있지만 이 때는 각 창이 같은 픽셀 포맷을 가져야 함


렌더링 컨텍스트를 활성화 하고 특정한 창과 연결하는 데는 wglMakeCurrent 함수가 사용


wglMakeCurrent(hDC, hRC);




2017. 3. 5. 05:04

윈도우즈의 디바이스 컨텍스트 개념은 2D 그래픽 응용 프로그램에 맞게 디자인


메모리 장치 컨텍스트를 만들지만, 이 경우 모델 역할을 해줄 장치 컨텍스트를 제시


창 인자에 NULL을 지정하더라도 데스크 톱의 장치 컨텍스트를 모델로 이용


3D 그래픽 렌더링의 대상이 되는 창이나 장치는 단순한 색상 깊이 이상의 다양한 특성을 필요하며 하드웨어 렌더링 장치 (3D 그래픽 카드)를 이용하는 경우는 더욱


OpenGL이 렌더링을 시작하기 전에 필요한 렌더링 설정에 따라 창을 설정


하드웨어와 소프트웨어 렌더링 중 어떤 방식을 사용하는가?


단일 버퍼와 이중 버퍼 방식 중 어떤 방식을 사용하는가?


깊이 버퍼가 필요한가?


스텐실 버퍼와 목표 알파, 누적 버퍼 등을 사용하는가?


일단 이러한 창의 인자를 지정한 뒤에는 나중에 변경 불가능


깊이 버퍼와 색상 버퍼만을 가진 창을 스텐실과 색상 버퍼만을 가진 창으로 바꾸고자 한다면, 첫 번째 창을 제거하고 새로운 특성을 가진 창을 다시 만들어야 함


일반적으로 창의 3D 특성은 창이 만들어진 직후에 한 번 설정


픽셀 포맷을 지정하기 위해 PIXELFORMATDESCRIPTOR 구조체를 제공


이들 멤버 값은 임의로 결정할 수 없으며 하나의 창에 대해서 제한된 종류의 픽셀 포맷만을 사용


픽셀 포맷값은 OpenGL 드라이버나 소프트웨어 렌더러에서 얻을 수 있음


* 픽셀 포맷의 선택과 설정


ChoosePixelFormat 제공


이 함수는 먼저 여러분이 원하는 3D 창의 속성들을 포함하는 픽셀 포맷 구조체를 만들고 이와 가장 유사한 픽셀 포맷을 찾아 이에 해당하는 인덱스를 리턴


이렇게 받은 픽셀 포맷을 두 번째 윈도우즈 함수 SetPixelFormat에 전달하여 픽셀 포맷을 지정


무엇보다 먼저 원하는 3D 창의 특성을 나타내도록 PIXELFORMATDESCRIPTOR 구조체를 채워야 함


ChoosePixelFormat 함수는 항상 바른 픽셀 포맷을 찾아 돌려주며 가능하면 하드웨어 가속 픽셀 포맷을 우선적으로 선택



2016. 10. 4. 13:57

직선 r1 = [2, 1, 1] + t * [0, 1, 2]

평면 r2 .[1, 1, 2] = 3 (내적, 평면)


둘 사이의 교점을 구하자


O 는 원점이다


P 는 직선과 평면의 교점이다


r1 은 직선 위의 어떤 점의 위치 벡터이다


r2 는 평면 위의 어떤 점의 위치 벡터이다


교점에서 두 벡터의 위치는 P로 같기 때문에



r2 에 r1을 대입할 수 있다



즉    ( [2, 1, 1] + t [0, 1, 2] ) . [1, 1, 2] = 3



여기에서 t 를 풀 수 있다


위의 내적을 계산하면 다음과 같다


[2, 1, 1].[1, 1, 2] + t [0, 1, 2].[1, 1, 2] = 3


2 + 1 + 2 + t + 4t = 3


5 + 5t = 3


5t = -2


t = -2/5



r1 에 t 를 구한 값을 대입하면 교점 P 가 나온다



r1 = [2, 1, 1] + (-2/5) [0, 1, 2]


   = [2, 1, 1] + [0, -2/5, -4/5]

   

   = [2, 3/5, 1/5]



따라서 교점은 다음과 같다




P = [2, 3/5, 1/5]



 



원문 사이트 : 


http://members.tripod.com/vector_applications/xtion_of_line_and_plane/index.html



2016. 10. 4. 11:29

두 개의 벡터 방정식 

 

r1[3, 4, 0] = 5 - 평면 1

r2[1, 2, 3] = 6 - 평면 2

 

으로 이루어진 두 개의 평면을 교차했을 때의 직선을 구하라

 

n1 을 평면 1의 normal 벡터이고

n2 를 평면 2의 normal 벡터이다

 

간단한 기하학적인 이유로 교선은 두 개의 normal 들에 수직이다

 

직선의 방정식 위치 벡터 r 은 다음과 같다

 

r = a + t * v;

 

여기에서 a 는 위치 벡터이고, v 는 직선과 평행한 벡터이다

 

우리는 a 와 v를 구하면 된다

 

 

1. v 찾기 위해 두 벡터의 cross product는 두 벡터에 수직한 세 번째 벡터를 준다

v 는 n1 과 n2에 수직하기 때문에 v = n1 x n2 는 직선에 평행할 것이다

 

위의 식에서

 

n1 = [3, 4, 0] 이고

n2 = [1, 2, 3] 이므로 

 

v = n1 x n2 = [3, 4, 0] x [1, 2, 3] = [12, -9, 9] 이다

 

 

2. a 를 찾기 위해

 

두 평면의 교점을 구한다 단 여기에서 임의의 점이므로 x = 0으로 대입하면

y, z 만 구하고 식이 두 개 이므로 연립 1차 방정식으로 풀 수 있고

교차점이 나온다

 

3x + 4y = 5      x + 2y + 3z = 6

 

x = 0 대입

 

y = 5 / 4, z = 7 / 6

 

그러므로 

 

a = [0, 5 / 4, 7 / 6]

 

이 된다

 

따라서 직선의 방정식은

 

 

r = [0, 5 / 4, 7 / 6] + t * [12, -9, 9]

 

r = [0, 5 / 4, 7 / 6] + t * [4, -3, 3]

 

이 된다

 

 

 

 

원문 사이트 

 

http://members.tripod.com/vector_applications/xtion_of_two_planes/index.html

 

 

 

 

2016. 3. 29. 21:18

- OpenGL 명령들을 하드웨어 렌더러에 보다 빨리 전달하는 OpenGL 기능

- 많은 시간과 자원을 필요로 하는 드로잉 명령을 보다 빠르게 처리




2016. 2. 15. 14:07

* 텍스처 맵을 지오메트리에 적용 단계


1. 텍스처를 메모리 내에 로딩

- 로딩이 된 후에 텍스처는 현재 텍스처 상태의 일부


void glTexImage2D(GLenum target, GLint level, GLint innerFormat,

                      GLsizei width, GLsizei height, GLint bound,

                     GLenum format, GLenum type, void* data)



- 텍스처 맵을 로딩하는데 사용

- 이 함수들이 호출되면 텍스처 정보가 OpenGL에 의해 복사

- 많은 자원을 필요로 함

- 텍스처 개체 섹션에서 살펴봄


target : GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D


level : 밉맵 레빌 지정하는데 사용

       밉맵을 사용하지 않는 일반 텍스처는 0으로 설정


innerFormat : 텍셀 당 얼만큼의 색상 요소를 저장, 저장 크기, 압축 여부

GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA, 

GL_RGB, GL_RGBA


width, height : 텍스처의 차원, 2의 제곱수로 지정


bound : 텍스처 맵의 테두리 두께를 지정하는데 사용

         텍스처 맵의 경계 부근에 추가적인 너비, 높이를 더해 확장해 나감

         텍스처 필터링에도 중요한 부분

         0으로 설정하면 테두리가 없는 상태가 됨


format : GL_RGB, GL_RGBA, 

          GL_BGR/GL_BGR_EXT, GL_BGRA/GL_BGRA_EXT


type : GL_UNSIGNED_BYTE, GL_BYTE, 

       GL_BITMAP, GL_UNSIGNED_SHORT, GL_SHORT,

       GL_UNSINGED_INT, GL_INT,

       GL_FLOAT


data : 실제 사용할 데이터 버퍼 포인터


로딩된 텍스처는 적절한 텍스처 상태의 설정이 있어야만 적용 가능


glEnable( GL_TEXTURE_2D );


- 각 텍스처 상태는 한 번에 하나씩만 사용


* 1차원과 2차원 텍스처의 경우 색상 버퍼에서 로딩


void glCopyTexImage2D(GLenum target, GLint level, GLenum                         innerFormat, int x, int y,

                         GLsizei width, GLsizei height, GLint bound);


* 텍스처 업데이트


이미 사용한 텍스처에서 새로 변경될 부분만 바꾸는 것


glTexSubImage2D(GLenum target, GLint level, 

                     GLint xoffset, GLint yoffset,

                     GLsizei width, GLsizei height,

                     GLenum format, GLenum type, const GLvoid* data);


* 텍스처와 지오메트리 맵핑


- 텍스처 사용을 가능하도록 설정 : glEnable(GL_TEXTURE_2D)

- 텍스처 로딩 : glTexImage2D( ... )


 모든 기본 모델에 텍스처 적용이 가능한 상태

- 하지만 이러한 텍스처를 지오메트리에 어떻게 적용할 것인가를 OpenGL에 전달

- 각 버텍스에 대해 텍스처 좌표를 지정하는 과정이 필요

- 텍스처 맵 내의 텍셀은 픽셀 맵과 같이 메모리 내의 위치로 지정되는 것이 아니라 추상적인 실수 값으로 지정( 0.0 ~ 1.0 )


* 텍스처 좌표의 지정


glTexCoord2f( GLfloat s, GLfloat t )


- 이 함수를 통해 각 버텍스에 대한 텍스처 좌표 적용이 끝나면 OpenGL은 텍스처를 늘리거나 줄여서 지오메트리에 맞게 끔 조절

- 이 조절은 텍스처 필터를 이용해서 이루어짐


* 텍스처 행렬

- 텍스처 좌표 역시 텍스처 행렬을 통해 변환 가능


glMatrixMode(GL_TEXTURE)


텍스처 행렬 개수는 2개


* 좌표 래핑, 텍스처 필터, 텍스처 환경



* 텍스처 환경


- 예제에서 흰색 재질 속성으로 일단 면이 그려진 후 텍스처가 적용

- 텍셀의 색상과 지오메트리 색상을 OpenGL이 어떻게 결합하는가를 결정


glTexEnv( GLenum target, GLenum pname, GLfloat param)


- target : 정의할 텍스처 환경

GL_TEXTURE_ENV, GL_TEXTURE_FILTER_CONTROL

- pname : 정의할 인자 이름

GL_TEXTURE_FILTER_CONTROL 일 경우 인자 이름은 GL_TEXTURE_LOD_BIAS가 되어야 함,

인자의 값은 밉맵 레벨 선택에 대한 bias 값이어야 한다


- GL_TEXTURE_ENV 일 경우 인자의 이름은 GL_TEXTURE_ENV_MODE 일 경우 사용할 수 있는 인자는 GL_REPLACE, GL_DECAL, GL_MODULATE, GL_BLEND, GL_ADD, GL_COMBINE 이 있다


Ct : 텍스처 컬러      At : 텍스처 알파

Cf : 프래그먼트 컬러 Af : 프래그먼트 알파

C : 결과값 컬러       C : 결과값 알파


- GL_DECAL : C = Cf *  (1 - At) + Ct * At        A = Af

지오메트리에 적용되는 텍셀 값, 블렌딩이 사용되고 텍스처에 알파 채널이 있을 경우 현재 블렌딩 함수에 따라 텍스처와 지오메트리의 색상이 블렌딩

   

- GL_REPLACE : C = Ct     A = At

지오메트리의 색상을 데체하는 텍셀 값. 블렌딩이 사용되고 텍스처에 알파 채널이 있을 경우 텍스처의 알파 값이 색상을 대체하는데 사용


- GL_MODULATE : C = Ct * Cf       A = At * Af

텍셀의 색상값을 지오메트리의 색상값과 곱함


- GL_ADD : C = Ct + Cf             A = At + Af

텍셀의 색상값이 지오메트리의 색상 값과 더해짐


* 기본 필터링

 - 텍스처가 지오메트리에 적용될 때는 텍스처 맵의 텍셀과 화면의 픽셀 간 1:1 대응이 이루어지는 경우는 거의 없다

- 텍스처가 화면에 나타날 방식을 조심스럽게 계획하고 조절

- 텍스처 이미지는 늘리거나 줄여서 화면에 표현되는 것이 일반적이므로 

지오메트리의 방향에 따라 텍스처가 조절


- 필터링 : 늘려지거나 줄여진 텍스처 맵으로부터 색상요소를 계산하는 과정


glTexParameteri( GLenum target, GLenum pname, GLint param )

- target : 인자가 적용될 텍스처 타겟

           GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D,                    GL_TEXTURE_CUBE_MAP

- pname : 설정할 텍스처 인자

GL_TEXTURE_MIN_FILETER : 텍스처 이미지 축소 방식이나 필터 지정

GL_TEXTURE_MAG_FILETER: 텍스처 이미지 확대 방식이나 필터 지정

GL_TEXTURE_WRAP_S : 텍스처 좌표 s가 0.0에서 1.0 범위 외부에 있을 때 제어하는 방식

GL_TEXTURE_WRAP_T : 텍스처 좌표 t가 0.0에서 1.0 범위 외부에 있을 때 제어하는 방식


- param : 지정된 인자의 값

GL_LINEAR, GL_NEAREST, GL_CLAMP, GL_REPEAT




2015. 8. 6. 11:35

조명 효과 사용하기


glEnable(GL_LIGHTING);


* 조명 모델의 설정

- 조명 모델은 모두 3가지

- glLightModel( ) 함수를 통해 설정

- 첫 번째 조명 인자 : GL_LIGHT_MODEL_AMBIENT



* 재질 속성의 설정

- 빛을 반사하는 정도를 설정

- 재질 속성 설정 방법은 2가지

-- 1. 각 폴리곤이나 폴리곤 셋에 대하여 glMaterial( ) 함수 호출



- 대부분의 경우 주변광과 분산광에 대한 반사도는 같게 설정된다.

- 빛이 나거나 번쩍하는 효과가 필요하지 않는 한 반사광은 설정할 필요가 없다.


-- 2. 색상 트래킹 

- 이 방식을 사용하면 재질에 대해 glColor만 호출해주면 된다. 

- 물론 그 전에 색상 트래킹을 사용 가능하도록 다음과 같이 설정해 주어야 한다.

- glEnable(GL_COLOR_MATERIAL);


- 다음은 glColorMaterial( ) 함수를 통해 glColor에서 설정한 값이 적용될 재질 인자를 지정한다.

- 예를 들어 주변광과 분산광을 폴리곤의 앞면에 적용하고자 한다면 다음과 같이 호출하면 된다.

- glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);


- 그 뒤로는 재질 속성을 설정하는 코드가 필요하다.


* 광원의 설정 











2015. 8. 5. 18:05

이 장에서 배울 것


* 그래픽스 파이프라인이 무엇이고 OpenGL과 연동하는 방법

* OpenGL의 기원과 오늘날의 OpenGL

* 책을 통해 세울 수 있는 기본 컨셉


이 책은 OpenGL에 관한 것이다. OpenGL은 너의 응용프로그램이 실행되는 장치의 그래픽스 서브시스템을 접근하고 제어하는 것을 사용할 수 있는 인터페이스이다. 전체적인 응용프로그램의 성능에서 실행하기를 윈하는 플랫폼을 구체화하는데 걱정하는 것보다 서브시스템에 대해 인터페이스를 표준화하는 것은 확률을 증가시키고 소프트웨어 개발자가 삼품의 품질을 생산하고, 흥미있는 컨텐츠를 생산하는데 집중할 수 있다. 이 표준 인터페이스는 Application Programming Interface(API)라고 불리고, 이것들 중에 OpenGL은 하나다. 이 장에서는 OpenGL을 소개하고 그것이 그래픽스 서브시스템에 어떻게 연동되는지 묘사하고, OpenGL의 기원과 진화에 대해 약간의 역사를 제공한다

2014. 1. 8. 00:27

다음과 같은 코드를 통해 그리기(Drawing)이 이루어진다

 

 

 

2-2 는 사각형을 칠할 색상이다

2-3dms 사각형을 그린다.

glRectf(x1, y1, x2, y2);

(x1, y1)은 좌측 하단 좌표, (x2, y2)는 우측 상단 좌표이다

핵심은 z = 0 인 평면에 사각형을 그린다

 

다음 코드는 화면에 그리는 코드이다

 

 

 

 

3-1 은 화면 사이즈에 맞게 끔 늘려주는 함수이다

뷰 포트라고 하고 처음 두 좌표가 시작점이고 마지막 두 점이 끝 점이다

보통 화면에 다 이미지를 채우고 싶으면 위와 같이 작성한다

 

3-2 는 Projection Matrix를 사용하겠다는 의미이다

Projection 종류는 두 가지가 있다

Orthographic Projection 과 Perspective Projection 이 있다

여기서는  Orthographic Projection에 대해 자세히 다룬다

 

glOrtho() 함수가 핵심인데 6개의 인자는 다음과 같다

left, right, bottom, top, near, far 이다

left, right - x 축 최소 최대

bottom, top - y 축 최소 최대

near, far - z 축 최소 최대

z 축의 경우는 값이 작아질수록 관측자로부터 물어진다

 

near, far 의 값은 Z = 0을 사이에 두고 값이 있으면 된다

즉 -1 ~ 1 이어도 상관 없고 -5~5 이어도 상관 없다

만약 near, far 값이 3 ~ 5 이면 클리핑 영역이

직사각형 앞 쪽에 있으므로 빨간 사각형이 화면에 보이지 않는다

마찬가지로 -7 ~ -9로 두면 클리핑 직육면체가 사각형 뒤 쪽에 있으므로

보이지 않는다

 

값을 넣어서 테스트 해보기 바란다

 

glOrtho()의 인자 값을 바꾸어서 테스트 해서 감을 잡아봐라 많은 도움이 될 것이다

 

해상도 600 x 600 화면에 오른쪽 위의 1/4을 채운 빨간 사각형을 그리고 싶으면

다음과 같은 값을 주면 된다

glViewport(0, 0, 600, 600);

glRectf(0.0f, 0.0f, 10.0f, 10.0f);

glOrtho(-10.0f, 10.0f, -10.0f, 10.0f, 1.0f, -1.0f);

 

다음과 같은 코드도 가능하다

glViewport(0, 0, 600, 600);

glRectf(0.0f, 0.0f, 2.0f, 2.0f);

glOrtho(-2.0f, 2.0f, -2.0f, 2.0f, 0.001f, -0.005f);

 

기본은 끝났다 다음은 기본 도형들을 그려보자

 

프로그래밍 연습

1. 사각형을 다음과 같은 비율과 위치로 나오게 해보라

가로 5 세로 2 위치 왼쪽 아래 꼭지점이 화면 가운데 나오게 하기

결과는 다음과 같을 것이다

 

 

 

2. near, far 가 -1 ~ 1 과 1 ~ -1 이 무슨 차이인지 조사해 보라

glOrtho(-10.0f, 10.0f, -10.0f, 10.0f, 1.0f, -1.0f);

glOrtho(-10.0f, 10.0f, -10.0f, 10.0f, -1.0f, 1.0f);

 

위의 두 줄의 코드는 무슨 차이인가?

 

 

다음은 전체 코드이다

 

 

 

2014. 1. 6. 21:14

기본 코드를 확인해보자

SetupRC() 함수는 초기에 한 번 호출 된다 ( Init() 함수와 같다고 보면 된다 )

 

SetupRC() 함수 안에 Region 1 안에 glClearColor(0.0f, 0.0f, 1.0f, 0.0f); 를 입력한다

이 함수는 지우는 색을 지정하는 함수이다

일단은 처음에 한 번만 지정한다

 

Region2에 다음 코드를 입력한다

glClear(GL_COLOR_BUFFER_BIT);

Color Buffer(색상 버퍼, 픽셀 버퍼)를 지우는 함수이다

GL_COLOR_BUFFER_BIT로 플래그로 설정한다

 

색상 버퍼 이외에도 버퍼 종류로는 깊이 버퍼, 스텐실 버퍼 등이 있다

이 버퍼들은 이후에 자세히 다룬다

 

glutSwapBuffers() 함수를 추가한다

이 함수는 더블 버퍼일 때 Front Buffer와 Back Buffer를 교체한다

코드의 추가 내용은 다음과 같다

 

 

 

 

결과 내용은 다음과 같다

 

 

 

우리가 원하는 대로 창을 지정한 색으로 다 지우고 그 색으로 채웠다

다음 과정은 이 위에 원하는 그림을 그리자

 

아래의 코드는 전체 코드이다

 

 

* 프로그래밍 연습

1. 배경 화면을 빨간색으로 채워보자

2. 배경 화면을 녹색으로 채워보자

3. 배경 화면을 노란색으로 채워보자

 

2014. 1. 6. 20:21

앞으로 사용될 기본 코드이다

Visual Studio 2010을 사용했다

Console Application을 사용했고

Empty Project이고 Unicode에서 구현한다

 

 

다음 소스는 기본 틀이다

맨 위의 주석 두 줄은 GPL License의 기본 틀이다

OpenGL 기본 세팅은 생략한다 다른 사이트를 참고하기 바란다

크게 다른 프로그램을 만들지 않는 한 Region 으로 구분, 코드를 추가한다

 

 

다음은 실행 결과이다

코드와 일치시켜서 알 수 있는 것은

4-3과 4-4의 코드가 적용 되었다는 것을 확인

4-3 윈도우 사이즈가 800 x 600 이다

4-4 윈도우 타이틀 제목이 "OpenGL Basic Code Window~~!!" 이다

4-8 은 GLUT 프레임 워크를 실행하는 기능이다

4-5는 화면의 사이즈가 변할 때 호출되는 콜백함수(ChangeSize)를 등록한다

4-6은 화면이 그려질 때 호출되는 콜백 함수를 등록한다

다음에 할 일은 창에 나타난 부분이 배경화면인데

이 부분을 지우는 부분을 구현하도록 한다

즉 창 바탕 화면을 원하는 색으로 칠해보도록 하자

 

* 프로그래밍 연습

1. 윈도우 사이즈를 400 x 200으로 수정해보자

2. 윈도우 타이틀 제목을 "Hello, World"로 바꾸어 보자

 

2014. 1. 6. 17:22

5년 만에 제대로 다시 자료를 정리하고 어느 정도까지 기술을 오픈하고

라이센스를 걸어야 할 지 모르겠다

상업적으로 많은 돈을 벌 수도 있고

GPL로 오픈 하자니 상업 쪽에서 안 쓰면 활용 가능성이 없을 수도 있고

BSD로 하자니 막 갖다 쓸 수도 있고 해서

우선 GPL 라이센스로 오픈하고 정말 상업적으로

필요하신 분들은 lividious@naver.com 으로 연락주시면

BSD 허가 여부를 알려 드리겠다

 

그리고 대부분은 핵심 코드만 올려놓거나 추상적으로 이론만 올려 놓으면

아무 도움도 안 되고 공부도 안 된다

 

물론 머리 좋은 사람은 단박에 알아낼 수 있지만 나 같은 사람은

그렇지 못하다

 

소스 코드만 올려 놓는다.

다이얼로그나 솔루션은 알아서 하시고

그러나 너무 복잡한 프로그램일 때는 같이 올려 놓는다

 

OpenGL, OpenCV, CUDA, Image Processing, Augmented Reality, 3D Reconstruction 에 관해 일단 자료 정리 하고

 

도전 분야는 Network Programming, Pattern Recognition, 동영상 프로그래밍에 관해 할 생각이다

 

추가 분야로는 리눅스, C#이 될 것이다.

 

다시 열심히 하자

 

 

 

 

2008. 9. 1. 15:38
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);

이렇게 하면 바탕 색이 적용된다.

glClear(GL_COLOR_BUFFER_BIT);
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);

이렇게 하면 바탕색이 적용되지 않는다.