Programming/openGL2020. 4. 14. 21:49

GL_MODELVIEW와 GL_PROJECTION만 예제로 많이 보았는데

GL_COLOR와 GL_TEXTURE도 가능한 옵션(?)이다.

 

void glMatrixMode(GLenum mode);

GL_MODELVIEW
Applies subsequent matrix operations to the modelview matrix stack.

GL_PROJECTION
Applies subsequent matrix operations to the projection matrix stack.

GL_TEXTURE
Applies subsequent matrix operations to the texture matrix stack.

GL_COLOR
Applies subsequent matrix operations to the color matrix stack.

[링크 : https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glMatrixMode.xml]

'Programming > openGL' 카테고리의 다른 글

glMatrixMode()  (0) 2020.04.14
opengl superbible 3rd 리눅스 빌드 패키지  (0) 2020.04.08
vulkan 문서  (0) 2020.04.06
openGL 책 보면서 정리중 - 챕터3  (0) 2020.04.05
glEnable(), glPushAttrib()  (0) 2020.04.04
openGL superbible 3rd ed. 읽기 시작  (0) 2020.04.03
Posted by 구차니

댓글을 달아 주세요

Programming/openGL2020. 4. 8. 21:05

2004년 책이라 안될줄 알았는데 다행이 몇개 패키지 설치하니 정상적으로 빌드되도 잘 작동된다.

 

$ sudo apt-get install libglu1-mesa-dev freeglut3-dev mesa-common-dev
[링크 : http://www.codebind.com/linux-tutorials/install-opengl-ubuntu-linux/]

 

$ sudo apt-get install libxmu-dev libxi-dev
[링크 : https://ubuntuforums.org/showthread.php?t=1703770]



'Programming > openGL' 카테고리의 다른 글

glMatrixMode()  (0) 2020.04.14
opengl superbible 3rd 리눅스 빌드 패키지  (0) 2020.04.08
vulkan 문서  (0) 2020.04.06
openGL 책 보면서 정리중 - 챕터3  (0) 2020.04.05
glEnable(), glPushAttrib()  (0) 2020.04.04
openGL superbible 3rd ed. 읽기 시작  (0) 2020.04.03
Posted by 구차니

댓글을 달아 주세요

Programming/openGL2020. 4. 6. 23:45

openGL 을 하고 나중에 vulkan을 보는게 좋으려나?

취미(?) 치고는 너무 가려는 건가?

 

[링크 : https://github.com/KhronosGroup/Vulkan-Samples]

[링크 : https://vulkan.lunarg.com/doc/sdk/1.1.106.0/windows/getting_started.html]

'Programming > openGL' 카테고리의 다른 글

glMatrixMode()  (0) 2020.04.14
opengl superbible 3rd 리눅스 빌드 패키지  (0) 2020.04.08
vulkan 문서  (0) 2020.04.06
openGL 책 보면서 정리중 - 챕터3  (0) 2020.04.05
glEnable(), glPushAttrib()  (0) 2020.04.04
openGL superbible 3rd ed. 읽기 시작  (0) 2020.04.03
Posted by 구차니

댓글을 달아 주세요

Programming/openGL2020. 4. 5. 22:11

이건 블로그 보다 위키에 정리 하는게 나으려나?

 

glBegin(GL_POINTS)

    glPointSize()

    glGetFloatv(GL_POINT_SIZE_RANGE,..)

    glGetFloatv(GL_POINT_SIZE_GRANULARITY,..) // 낱알 모양, 입자의 형상

glEnd()

 

 

glBegin(GL_LINES)

    glLineWidth(GLFloat value)

    glGetFloatv(GL_LINE_WIDTH_RANGE,..)

    glGetFloatv(GL_LINE_WIDTH_GRANULARITY,..) // 낱알 모양, 입자의 형상

glEnd()

 

glBegin(GL_LINE_STRIP)

 

glBegin(GL_LINE_STIPPLE)

    glLineStipple(GLint factor, GLushort pattern) // factor : 픽셀 단위 길이, pattern : 선의 형상

glEnd()

 

glBegin(GL_LINE_LOOP)

 

 

삼각형

glEnable(GL_CULL_FACE)

glDisable(GL_CULL_FACE)

glShadeModel(GL_FLAT) // GL_SMOOTH

glBegin(GL_TRIANGLES)

glBegin(GL_TRIANGLE_STRIP)

glBegin(GL_TRIANGLE_FAN)

    glFrontFace(GL_CW)

    glFrontFace(GL_CCW)

glEnd()

 

glEnable(GL_DEPTH_TEST)

    glDepthMask(GL_FALSE) // GL_TRUE

    glClearDepth(GLclampd value)

 

stipple (점묘법)

1bit color bitmap으로 선에 패턴을 그리거나 폴리곤에 32x32 사이즈의 패턴을 입힐 수 있으나

텍스쳐와는 다르게 rotate 되지 않는 특성을 지님(반대로 생각하면 선에 패턴을 그어 두면 줌 배율 상관없이 선 크기가 고정된다?)

 

scissor

win32api에서 갱신영역 지정해서 cpu 조금 먹게 하는 것과 비슷한 기법

직사각형 식으로 x,y,w,h 로만 지정이 가능

 

stencil

스텐실 마스크를 통해서 원하는 위치만을 렌더링 할 수 있다고 하는데 좀 많이 복잡함

glutInitDisplayMode(GLUT_STENCIL)

glEnable(GL_STENCIL_TEST)

glStencilFunc()

glClear(GL_STENCIL_BUFFER_BIT)

glClearStencil(GLint s)

glStencilOp(fail, z-fail, z-succes)

/*

GL_KEEP - 보존

GL_ZERO - 0으로

GL_REPLACE - glStencilFunc() 지정값으로 대체

GL_INCR - 증가

GL_DECR - 감소

GL_INVERT - 반전

GL_INCR_WRAP - 조건에 의해 증가

GL_DECR_WRAP - 조건에 의해 감소

*/

'Programming > openGL' 카테고리의 다른 글

opengl superbible 3rd 리눅스 빌드 패키지  (0) 2020.04.08
vulkan 문서  (0) 2020.04.06
openGL 책 보면서 정리중 - 챕터3  (0) 2020.04.05
glEnable(), glPushAttrib()  (0) 2020.04.04
openGL superbible 3rd ed. 읽기 시작  (0) 2020.04.03
gluPerspective / gluLookat 소스코드  (0) 2019.06.01
Posted by 구차니

댓글을 달아 주세요

Programming/openGL2020. 4. 4. 10:15

두 함수가 다루는 내용이 비슷한 느낌이라 일단 스크랩

 

glEnable()은 GL_FOG 이런걸 쓰다면

glPushAttrib()는 GL_FOG_BIT 이런걸 쓴다. 접미가 다른게 붙는걸 보니

다른 enum을 쓰는 함수이긴 한데 내부 구조가 어떻게 짜여있는지가 궁금해지는 함수

 

[링크 : https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glEnable.xml]

[링크 : https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glPushAttrib.xml]

'Programming > openGL' 카테고리의 다른 글

vulkan 문서  (0) 2020.04.06
openGL 책 보면서 정리중 - 챕터3  (0) 2020.04.05
glEnable(), glPushAttrib()  (0) 2020.04.04
openGL superbible 3rd ed. 읽기 시작  (0) 2020.04.03
gluPerspective / gluLookat 소스코드  (0) 2019.06.01
gl glx glu glut 소스코드  (0) 2019.05.31
Posted by 구차니

댓글을 달아 주세요

Programming/openGL2020. 4. 3. 23:21

예전에 줄을 그어가면서 열심히 읽었구나...

그런데 놓친게 왜이리 많았지? 그래서 이해를 못했던 건가? 이런 생각이 많이 드네

 

아무튼 다시 공부 시작해보자.. 틈틈히

Posted by 구차니

댓글을 달아 주세요

Programming/openGL2019. 6. 1. 21:27

답답해서 뜯어보는중 ㅋㅋ

왜 이런 생각을 안했었지?

 

 

근데 본다고 이해할수 있는건 또 별개의 문제네 ㅋㅋㅋ

#define __glPi 3.14159265358979323846

 

void GLAPIENTRY

gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar)

{

GLdouble m[4][4];

double sine, cotangent, deltaZ;

double radians = fovy / 2 * __glPi / 180;

 

deltaZ = zFar - zNear;

sine = sin(radians);

if ((deltaZ == 0) || (sine == 0) || (aspect == 0)) {

    return;

}

cotangent = COS(radians) / sine;

 

__gluMakeIdentityd(&m[0][0]);

m[0][0] = cotangent / aspect;

m[1][1] = cotangent;

m[2][2] = -(zFar + zNear) / deltaZ;

m[2][3] = -1;

m[3][2] = -2 * zNear * zFar / deltaZ;

m[3][3] = 0;

glMultMatrixd(&m[0][0]);

}

 

void GLAPIENTRY

gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx,

     GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy,

     GLdouble upz)

{

float forward[3], side[3], up[3];

GLfloat m[4][4];

 

forward[0] = centerx - eyex;

forward[1] = centery - eyey;

forward[2] = centerz - eyez;

 

up[0] = upx;

up[1] = upy;

up[2] = upz;

 

normalize(forward);

 

/* Side = forward x up */

cross(forward, up, side);

normalize(side);

 

/* Recompute up as: up = side x forward */

cross(side, forward, up);

 

__gluMakeIdentityf(&m[0][0]);

m[0][0] = side[0];

m[1][0] = side[1];

m[2][0] = side[2];

 

m[0][1] = up[0];

m[1][1] = up[1];

m[2][1] = up[2];

 

m[0][2] = -forward[0];

m[1][2] = -forward[1];

m[2][2] = -forward[2];

 

glMultMatrixf(&m[0][0]);

glTranslated(-eyex, -eyey, -eyez);

}

Posted by 구차니

댓글을 달아 주세요

Programming/openGL2019. 5. 31. 19:02

일단은 소스도 분석을 좀 해봐야지 이해가 잘되려나?

 

[링크 : https://www.mesa3d.org/download.html]

[링크 : https://mesa.freedesktop.org/archive/] gl glx

[링크 : http://ftp://ftp.freedesktop.org/pub/mesa/glu/] glu

[링크 : http://ftp://ftp.freedesktop.org/pub/mesa/glut/] glut

'Programming > openGL' 카테고리의 다른 글

openGL superbible 3rd ed. 읽기 시작  (0) 2020.04.03
gluPerspective / gluLookat 소스코드  (0) 2019.06.01
gl glx glu glut 소스코드  (0) 2019.05.31
glulookat / gluperspective / glfrustrum / glortho  (0) 2019.05.30
gl model view projection mat  (0) 2019.05.29
gluPerspective()  (0) 2019.05.28
Posted by 구차니

댓글을 달아 주세요

Programming/openGL2019. 5. 30. 19:04

다른 유틸리티를 같은 레벨로 봤군...

gluLookAt과 gluPerspective는 카메라를 조작하는 방법인데

glu로 시작하듯 gl Utility 계열이고

gl로 시작하는 glFrustum 과 glOrtho는

프로젝션 뷰를 perspective와 orthogonal로 설정하도록 한다.

 

Name
gluLookAt — define a viewing transformation

C Specification
void gluLookAt( GLdouble eyeX,
  GLdouble eyeY,
  GLdouble eyeZ,
  GLdouble centerX,
  GLdouble centerY,
  GLdouble centerZ,
  GLdouble upX,
  GLdouble upY,
  GLdouble upZ);

[링크 : https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluLookAt.xml]

 

Name
gluPerspective — set up a perspective projection matrix

C Specification
void gluPerspective( GLdouble fovy,
  GLdouble aspect,
  GLdouble zNear,
  GLdouble zFar);

[링크 : https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/gluPerspective.xml]

 

Name
glFrustum — multiply the current matrix by a perspective matrix

C Specification
void glFrustum( GLdouble left,
  GLdouble right,
  GLdouble bottom,
  GLdouble top,
  GLdouble nearVal,
  GLdouble farVal);

[링크 : h]ttps://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glFrustum.xml]

 

Name
glOrtho — multiply the current matrix with an orthographic matrix

C Specification
void glOrtho( GLdouble left,
  GLdouble right,
  GLdouble bottom,
  GLdouble top,
  GLdouble nearVal,
  GLdouble farVal);

[링크 : https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glOrtho.xml]

'Programming > openGL' 카테고리의 다른 글

gluPerspective / gluLookat 소스코드  (0) 2019.06.01
gl glx glu glut 소스코드  (0) 2019.05.31
glulookat / gluperspective / glfrustrum / glortho  (0) 2019.05.30
gl model view projection mat  (0) 2019.05.29
gluPerspective()  (0) 2019.05.28
glfw3 in ubuntu 19.04  (0) 2019.05.10
Posted by 구차니

댓글을 달아 주세요

Programming/openGL2019. 5. 29. 08:06

오랫만에 다시 보니 기억이 하나도 안나네.. 큭...

행렬부터 다시 공부해야하나?

 

[링크  : http://www.opengl-tutorial.org/kr/beginners-tutorials/tutorial-3-matrices/]

[링크  : https://solarianprogrammer.com/2013/05/22/opengl-101-matrices-projection-view-model/]

'Programming > openGL' 카테고리의 다른 글

gl glx glu glut 소스코드  (0) 2019.05.31
glulookat / gluperspective / glfrustrum / glortho  (0) 2019.05.30
gl model view projection mat  (0) 2019.05.29
gluPerspective()  (0) 2019.05.28
glfw3 in ubuntu 19.04  (0) 2019.05.10
openGL vao(Vertex Array Object)  (0) 2019.05.07
Posted by 구차니

댓글을 달아 주세요