본문 바로가기

Architecture my OpenGL engine core3 일단 가장 큰 자료의 마지막에 도달했어요. 이번 컨트롤 전반적인 설계를 포스팅 하고 난 후에는 구현을 하느라 몇 일 동안 포스팅은 어려울 듯 하지만, 그래도 최대한 후다닭 해보도록 노력해야죠 :) 컨트롤 설계 역시 일단 추상적인 생각부터 해야 겠죠. 장비(Device)와 입력(Input) 컨트롤은 임의의 장비(Device)로 부터 임의의 신호(Input)를 받아서 처리 해주는 거에요. 임의라는 말은 일반화 되어 있지 않은 추상 클래스로 만들어야 겠죠? 컨트롤의 입장에서는 여러 개의 Device들을 가질 수 있어요. 키보드, 마우스, 조이스틱, 카메라, ... 그것들은 모두 Device를 상속 받겠죠? 그럼 아래와 같은 설계를 생각할 수 있을 거에요. 액션(Action)과 액션 맵(ActionMap) 신호.. 더보기
Architecture my OpenGL engine core2 지난 설계에 이어 디스플레이에 대한 설계와 설명을 진행 할게요. 포스팅 하기에 앞서, 확인 해 보고 싶은 몇 가지가 있었어요. 일단, 현재 만들었던 프로젝트는 확장성을 거의 염두 안하고 만든 대다가 오브젝트를 그리는 방법 자체도 전혀 원시적인 방법을 사용해서 테스트하는데 시간이 좀 걸렸네요^^;;; 빛이 오브젝트에 어떻게 영향을 받는지에 대해서 진행한 테스트 였는데, 왜 이런 테스트를 진행 했는지는 포스팅을 보면 이해가 가실 테구요. 단일 광원, 다수 오브젝트 다수라고 해봐야 두 개에요ㅋㅋ. 일단, 이 테스트는 굉장히 간단해요. 단일 광원이 오브젝트에 쐬였을 때 어떻게 보여질까~? 이고, 결과는 아래와 같아요. 다시 한번 말하지만, 지금 정점과 법선 벡터등의 설정이 전혀 되있지 않은 상태에서 테스트를 위.. 더보기
Architecture my OpenGL engine core1 일단, 한바탕 울음을 쏟고 포스팅을 시작 해야겠어요. ㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ 기존에 만들어 놓은걸 살포시 갈아엎고 다시 설계하기 시작 했거든요. 기존 설계는 확장을 하려면 너무 하드코딩하는 다형성이 전-혀 들어가 있지 않은 설계를 했기에, 어느정도 공부 후에 다시 시작 하고 있습니다.ㅜ 크흙 다행스러운건 기존의 함수들을 구지 없애 면서 할 필요는 없기 때문에, 프로세스에는 그렇게 큰 영향은 없어 보이는 거? 그래서 설계 초기 부터 생각의 흐름자체를 쭉- 정리해 나가는 게 설명하기도 좋을거 같고, 나중에 이런 부분이 제 스스로도 스킬적인 역량으로 쌓인다는 희망을 가지고 시작 할게요 :) 전체적인 구성과 목적 설계에 앞서 구성을 먼저 해야 겠죠? 제가 알아본 부분과 앞으로 이렇게 만들어야 겠다~ 하는 .. 더보기
virtual keyword in C++ 상속, 메모리 관리, 재사용, ... 이것들이 바로 virtual 키워드들과의 관련이 있는 말들이에요. 사실, 학과 커리큘럼을 이수하면서는 이 키워드를 이용하지 않아도 문제를 해결 하는대는 저어어언혀 지장이 없었어요. 하지만 요근래 혼자하는 프로그램도 덩치가 커지고, 클래스를 상속받거나 기능자체를 재사용해야 하는 일이 많은데다가, 궁극적으로 회사(구체적으로 면접)에서 "기본적인" 프로그래밍 능력으로 많이들 생각하는 거 같더라구요. 이것저것 많이 봤는데 생각보다 이 키워드가 해주는 일이 많아서 좀 헷갈리기도 하고 어려운데, 그렇다고 더 좋은, 더 높은 완성도를 이룰 수 있는데 어찌 패스해야 할까요~~ 라는 생각에 포스팅을 시작 하겠지만, 마구마구 파고들면 너무 많은 내용을 언급해야 하므로 "최대한" 간단히.. 더보기
난수 사용 하기 자바에서 난수를 생성하는 방법은 두 가지가 있는데, 일단 저는 사용법을 바로 확인한 Random 클래스에 대해서 포스팅 하려고 해요. 생성자 Random() Random 클래스 객체를 생성 Random(long seed) 기본 생성자와 동일하나, 원하는 난수 발생 인자를 바탕으로 생성 사용법 // 그냥 만들기 Random rInstance1 = new Random(); // 특정한 난수 발생 인자를 넣기 Random rInstance2 = new Random(12); // 시간으로 난수 발생 인자를 넣기 Random rInstace3 = new Random(System.currentTimeMillis()); 메쏘드 boolean nextBoolean() 등분포하게 무작위 생성된 true, false중 하.. 더보기