블로그 이미지
황상두

카테고리

기타 (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

공지사항

태그목록

최근에 올라온 글

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 황상두
, |

최근에 달린 댓글

글 보관함