블로그 이미지
황상두

카테고리

기타 (101)
알고리즘(백준) (3)
임베디드 보안 (7)
windows internal (22)
공부 (16)
전공 스터디 (27)
과제 (8)
영어 (6)
기록물 (6)
Total
Today
Yesterday

달력

« » 2025.10
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

공지사항

태그목록

최근에 올라온 글

'과제'에 해당되는 글 8건

  1. 2017.06.15 glText(opengl에 텍스트 출력하기)
  2. 2017.06.14 opengl text out
  3. 2017.06.13 buffer함수 비우기
  4. 2017.06.11 회전함수 구현
  5. 2017.06.11 연관된 구끼리 서로 연결하기!

http://www.opengl-tutorial.org/kr/beginners-tutorials/tutorial-3-matrices/ 


gCmera.matrix() 를 float*로 변환하는 함수를 만들고 


이를 대입해준다


gCamera.matrix()는 projection()*view() 둘을 곱한 것이다.


두 matrix에 대해서 궁금하다면 위 링크 참조!


'과제 > opengl' 카테고리의 다른 글

opengl text out  (0) 2017.06.14
buffer함수 비우기  (0) 2017.06.13
회전함수 구현  (0) 2017.06.11
연관된 구끼리 서로 연결하기!  (0) 2017.06.11
컴퓨터 그래픽스 질문  (0) 2017.06.11
Posted by 황상두
, |

opengl text out

과제/opengl / 2017. 6. 14. 14:21

openGL 에서 텍스트 출력방법은 2~3가지 정도된다.(물론 제가 아는 한에서)


1. glBitmapChacter를 사용하다. (char를 이미지형태로 변환해주는 API함수이다.)

2. github에서 라이브러리를 다운 받아서 사용한다.


나는 2번쨰 방법을 이용하고자한다.

이유는 다양하다.


처음에 glut가 아닌 glfw로 코드를 짰기 때문에

1번 방법을 사용하려면 코드 수정을 너무 많이 해야한다.

그래서 glfw로 짜기로 결정하였다.


github에서 검색한 결과 다행히 나와 비슷한 생각을 하는 사람들이 있었나보다.

text를 출력해주는 다양한 오픈 소스가 있었다. 



'과제 > opengl' 카테고리의 다른 글

glText(opengl에 텍스트 출력하기)  (0) 2017.06.15
buffer함수 비우기  (0) 2017.06.13
회전함수 구현  (0) 2017.06.11
연관된 구끼리 서로 연결하기!  (0) 2017.06.11
컴퓨터 그래픽스 질문  (0) 2017.06.11
Posted by 황상두
, |

buffer함수 비우기

과제/opengl / 2017. 6. 13. 00:06

opengl 위키 참조

https://www.khronos.org/opengl/wiki/Main_Page



버퍼함수를 비우지 않고 쌓아두면 결국 오류가 난다.

최대 버퍼가 512MB라고 한다.



버퍼용량초과문제를 해결하기 위해서

glDeleteBufferData() API함수를 이용하였다.



그런데 주의할 점은

glDrawArrays API함수로 도형을 그리고 texture작업까지 마친후 저 함수를 써줘야한다. 그러지 않으면 도형이 그려지지 않는 건 당연하다.


또한 glBindVertex로 vertex가 binding되어 있을 때만 버퍼를 삭제할 수 있으니 이점을 주의하자!!

이것 찾느라 시간 오래 걸렸다.

'과제 > opengl' 카테고리의 다른 글

glText(opengl에 텍스트 출력하기)  (0) 2017.06.15
opengl text out  (0) 2017.06.14
회전함수 구현  (0) 2017.06.11
연관된 구끼리 서로 연결하기!  (0) 2017.06.11
컴퓨터 그래픽스 질문  (0) 2017.06.11
Posted by 황상두
, |

회전함수 구현

과제/opengl / 2017. 6. 11. 16:33

glRotate3f를 직접 구현하고자한다.

glut에서는 지원해주지만 glfw에서 제공해주지 않으므로 직접구현하고자 한다.





구현목표는 

방향벡터를 중심으로 회전되도록 하는 것!

각각 x축 , y축 , z축 중심으로 회전하는 방법이 위에 3가지 방식이라고 보면 된다.



위에처럼 직접 Matrix곱셈으로 구현해서 하려고 했으나 

이차원 배열을 포인터로 넘기는 것에 대한 문제점

동시에 realease시 제대로 동작하지 않을 우려가 크다.

그 이유는 매개변수로 참조자나 포인터를 많이 쓰고 내부적으로 메소드를 쓰고하다보면 최적화 과정에서 필수적인 데이터를 빼먹을 수 있기 떄문이다

그렇기 때문에 inline함수를 이용해서 구현을 하였다.












'과제 > opengl' 카테고리의 다른 글

opengl text out  (0) 2017.06.14
buffer함수 비우기  (0) 2017.06.13
연관된 구끼리 서로 연결하기!  (0) 2017.06.11
컴퓨터 그래픽스 질문  (0) 2017.06.11
컴퓨터 그래픽스 프로젝트  (0) 2017.06.08
Posted by 황상두
, |





처음에 LineSegment를 구하기 위해서 두 점을 알면 직선을 알 수 있다는 공식을 활용하려고 했으나 3차원이기 때문에 LineSegment공식을 활용하였다.




*Line Segment


p = p1 + t(p2-p1)




* 소스코드 부분


for (int j = 0; j < 10000; j++)

{

//x[i] = a * bitMask(i, 3);

//y[i] = a * bitMask(i, 2);

//z[i] = a * bitMask(i, 1);

vertex[n] = node.getX() + (a* bitMask(i, 3)) * (j / 10000.0);

vertex[n + 1] = node.getY() + (a*bitMask(i, 2)) * (j / 10000.0);

vertex[n + 2] = node.getZ() + (a*bitMask(i, 1)) * (j / 10000.0);

n += 3;

}



LineWidth가 동작하지 않아서 LINE_POINT를 활용하기위해 좌표를 구하였다.


vertex[n] = node.getX() + (a* bitMask(i, 3)) * (j / 10000.0); //error


곱셈을 할 떄에는 타입을 잘 따지자...

10000.0을 10000으로 작성하면 점이 찍히지 않는다. 














'과제 > opengl' 카테고리의 다른 글

opengl text out  (0) 2017.06.14
buffer함수 비우기  (0) 2017.06.13
회전함수 구현  (0) 2017.06.11
컴퓨터 그래픽스 질문  (0) 2017.06.11
컴퓨터 그래픽스 프로젝트  (0) 2017.06.08
Posted by 황상두
, |

최근에 달린 댓글

글 보관함