Loading...
2016. 6. 17. 23:07

shader 구조를 대략 만들고 결과물을 띄웠다.

그냥 x파일을 로드해서 띄움.셰이더 구조와 엔진 구조를 짜는데 시간이 좀 걸렸음.내일부터는 기존에 해 뒀던 자체포맷, 케릭터 애니메이션 관련 작업을 다시 정리하면서 붙여야 겠다. 이 결과물을 얻기 까지 삽질이 너무 많았다. ㅜㅜ.그냥 몇년동안 작업하던 자체엔진 소스를 통채로 날리고 새로 짜는데 기억도 안나고 죽겠다...마음에 안들어도 그냥 기존거 수정으로 갈걸그랬나벼.... 완료1. dxut를 쓰지 않는 멀티 플랫폼 엔진 기본 구조2. dx shader(hlsl)을 사용하는 dx9용 셰이더 기본 파서.3. 벡터, 행렬, 트렌스폼 관련 라이브러리 제작. 해야할 거.1. 버텍스, 인덱스 구조2. 케릭터 구조 (엔진상에서 어떻게 관리할 건지) 생각중인것.1. 셰이더 고치고 fxo 컴파일 하고....이거 너무 ..

static function 실수

물체를 열심히 찍는데 물체가 안보인다....머지?? 상단에서는 graphic api 독립적이고 camera도 상단에 붙어있어서dx 라이브러리는 안쓴다.하단에서 dx9을 쓴다면 자체 api를 dx9로 바꿔주는 함수들을 제공한다.그런데 행렬의 곱셈에서 삽질을 했다. // 행렬 곱static MgMatrix4x4 Mul(const MgMatrix4x4 &m1, const MgMatrix4x4 &m2) {MgMatrix4x4 r;for (int i = 0; i < 4; ++i){for (int j = 0; j < 4; ++j){r.m[i][j] = m1.m[i][0] * m2.m[0][j] +m1.m[i][1] * m2.m[1][j] +m1.m[i][2] * m2.m[2][j] +m1.m[i][3] * m2.m..

하루동안 삽질한 버그.

메모리가 자꾸 샌다.어디일까 싶어서 _CrtSetBreakAlloc(); 와 vld를 사용했는데 정확한 위치는 안나옴.그래서 기존에 추가한거 하나씩 빼면서 했는데도 절반정도 제거함. 마지막 해결은 결국 내가 실수한 컨버팅 때문이었다. 우선 각각의 manager들을 managerList_ 에 넣어두고 종료시에 이 managerList_ 에 있는manager들을 지워주는데 이렇게 했었다. for(int index=cnt-1; index>= 0; --index){((MgManagerBase*)managerList_[index])->Destroy();delete managerList_[index];}managerList_는 void* 를 담고있고 모든 manager들은 MgManagerBase를 상속받는다.그래..

10. shader compile (fxo)

컴파일 부하를 줄이고 원본 셰이더를 숨기기 위해 fxo 사용. 배치파일을 만들어서 사용하면 편하다.배치파일의 내용은 아래와 같다. xc -nologo /Tfx_2_0 /Fo"생성파일경로\파일.fxo" "원본파일경로\파일.fx"pause /T : 셰이더 버전./Fo : 오브젝트 파일을 생성 만약 /Fh로 하면 헤더파일을 출력한다. 이 경우에는 결과파일은 파일.fxh로 해야 한다. Reference Link- http://blog.naver.com/sorkelf/40142758648

9. 유니코드

유니코드로 작업을 해야할지 멀티바이트로 작업을 해야할지 고민에 대한 고민. 처음 자체엔진을 만들때는 멀티바이트를 사용하였고두번째 자체엔진을 만들때는 유니코드를 사용하였다. 멀티바이트 코드 : 문자 하나의 길이를 다양하게 처리. 숫자나 영문자나 인용부호는 1바이트, 그 이외 한글이나 중국어, 일본어등의 글자는 2바이트로 표현. 1바이트와 2바이트 값을 구분하기 위해 2바이트는 무조건 128(0x80)이후의 값으로 시작. 유니코드 : 각각의 문자에 유니크한 값을 주어 모든 문자는 동일한 길이를 지닌다. (2byte) 유니코드 탄생 배경 : 몇몇 언어와 글쓰기 방법이 상당히 많은 문자들로 구성되어 있어서 1바이트의 최대값인 256의 경우의 수를 초과한다는 문제점이 있다. 이 문제의 해결방안으로 제시된 것이 유..

8. application

현재 구조 assert - 컴파일 assert- 런타임 assert- 무결성 체크 | core - math - geometry- transform- memory- device (렌더러 기본 포맷) | application (툴이나 클라이언트의 기본을 만들어 주는 녀석)- renderapi 지원 - dx9 (현재 작업중) - dx10 - dx11 - dx12 (visual studio를 변경해야 할 듯) - opengl- window type 지원 - winth dxut (dx일 경우 내부 call용) - window api (클라이언트용) - mfc (tool 용) rendererX9 (dx9용 렌더러)- core의 device 상속 rendererX10 (dx10용 렌더러)- core의 device 상..

6. 그래픽스 api

opengl은 아예 배제하고 dx9과 dx11을 지원하도록 한다.이전에 dx9, dx10 지원하는 엔진을 개발했을 때 만든 라이브러리를 재사용 할 예정.이번에도 dxut 기반으로 제작한다. dxut 붙이면서 발생했던 에러1. error C4996: 'GetVersionExA': was declared deprecated error C4996: 'GetVersionExW' was declared deprecated비추하는거 사용할 경우 발생.해결방법- 걍 프로젝트상에서 무시. 프로젝트 속성/c c++/ 일반/ sdl 체크에서 꺼주던지 하면된다.- 해당 에러 disable. #pragma warning(push) #pragma warning(disable: 4996) #include "multimon.h" ..

2014. 10. 9. 16:58

5. 프로젝트 설정 - dll

dll에 대한 설명은 아니고 프로젝트 설정하다가 삽질한거 기록. dll 소스 파일이 있는 프로젝트를 소스 디버깅 하기 위해서는 반드시 생성한 dll과 pdb 파일이 있어야 한다. 프로퍼티 시트에서 미리 매크로를 설정해 두었는데 이를 사용해서 dll프로젝트의 속성에 설정해 줘야 할 부분들이 있다. 1. 우선 파일을 출력하는 곳과 파일이름 부터 제대로 확인하자. 2. 그리고 import할 dll과 export dll 설정을 추가해 준다. 3. 디버깅을 위해서 같은 경로에 pdb파일이 생기도록 해 준다. 4. dll 파일이름과 dll 디렉터리를 지정 해 준다. 5. 라이브러리 링크를 해 준다. 간만에 비쥬얼 프로젝트 설정하려니 빡세다... 2013이라 추가 삽질해야하는것도 생기고... Reference Lin..