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 super bible 3rd - 4,5 chapter  (0) 2020.04.06
openGL 책 보면서 정리중 - 챕터3  (0) 2020.04.05
glEnable(), glPushAttrib()  (0) 2020.04.04
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 super bible 3rd - 4,5 chapter  (0) 2020.04.06
openGL 책 보면서 정리중 - 챕터3  (0) 2020.04.05
glEnable(), glPushAttrib()  (0) 2020.04.04
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 super bible 3rd - 4,5 chapter  (0) 2020.04.06
openGL 책 보면서 정리중 - 챕터3  (0) 2020.04.05
glEnable(), glPushAttrib()  (0) 2020.04.04
Posted by 구차니

댓글을 달아 주세요

Programming/openGL2020. 4. 6. 21:51

아 정리하기 귀찮다 -ㅁ-

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

opengl superbible 3rd 리눅스 빌드 패키지  (0) 2020.04.08
vulkan 문서  (0) 2020.04.06
opengl super bible 3rd - 4,5 chapter  (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' 카테고리의 다른 글

vulkan 문서  (0) 2020.04.06
opengl super bible 3rd - 4,5 chapter  (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' 카테고리의 다른 글

opengl super bible 3rd - 4,5 chapter  (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 구차니

댓글을 달아 주세요