'프로그래밍/그래픽스'에 해당되는 글 28건
- 2011.01.25 Dx 기반 프로그램 위에 웹을 띄우려고 한다면
- 2011.01.05 dx에 swf를 올리려면....
- 2010.11.22 Freetype2 짜짤한 처리
- 2010.03.25 라이트 미들웨어
- 2010.02.27 FPSLIMITER
- 2009.12.16 Shader Study 다음 발표를 Chapter 24: The Importance of Being Linear 요걸 하려 하는데
- 2009.12.15 발표 PPT 정리 / Shader Study - Gems3-3 Blend Shadpes : Breaking the Limit
- 2009.12.15 발표 PPT 정리 / Shader Study - Gems3-2 Animated Crowd Rendering
- 2009.12.15 발표 PPT 정리 / 3D Programing Study Dx9 7-4,5,6,7,8
- 2009.12.15 발표 PPT 정리 / 3D Programing Study Dx9 7-1,2,3
Dx 기반 프로그램 위에 웹을 띄우려고 한다면
1. 팡야와 같이 갈무리해서 쓴다
장점 : 파싱으로 얻은 결과를 gameui로 찍으면 화면은 더할나이 없겠죠?
단점 : 링크와 버튼 같은 경우도 전부 구현해 줘야 하구요 이경우는 엄청난 파싱코드가 난무하게 되며 당연히 게임의 속도를 까먹는 리소스 벌래가 되겠구요 페이지가 큰겨우에
비례해서 n * time이 되겠죠
결론 : ui에 신경을 많이 쓰고 싶은 게임이라면 한번쯤은 가능하다 하지만 조잡하고 속도가 떨어진다
하지만 게시판이 뜨는경우를 생각하면 게임진행사황이 거의 아니무로 이방법도 괜찮겠지만 제작시간이 오래 걸린다
2. ATL
장점 : 쉽게 뜬다 -_- 단 3줄? 다른 라이브러리기 때문에 웹페이지에 대한 정의를 내릴 필요가 없다.
단점 : 다른 라이브러리를 쓰기때문에 다른 제작자들의 컴파일러와 라이브러리 버젼이 일치해야 한다.
세부컨트롤이 불가능하므로 AtlAxWin을 그대로 쓰는것보다는 CAxWindow계열의 윈도우를 생성해내
obj를 붙여 제작하는게 더현실적이다. 예제 코드가 별로 없다.
결론 : 역시나 쉬운게 비지떡이라고 세부 컨트롤 즉 마우스 오른쪽 클릭을 막고 싶다던지 쉬프트키 누르고
링크를 눌렀을때 같이 새창이 뜨는 경우를 막으려면 코드량이 좀 늘것 같고 ATL을 공부해야 한다. -_-;
ATL을 이용한 예제와 소스
http://mypage.sarang.net/phpBB2/viewtopic.php?t=215
3. COM
장점 : IWebBrowser2 계열로 쉽게 뜨고 쉽게 컨트롤이 가능하다
단점 : ATL과 마찬가지로 멤버 메소드(COM을 기반으로 함수라는 말은 메소드로 정정) 들이 세부적인 컨트롤을 못하므로
멤버 이벤트 메소드들을 제정의해서 써야한다. 그리고 ATL과 마찬가지로 COM을 공부해야 한다 ATL보다 더 자비심이 없는것 같다 ;ㅁ;
결론 : 많은 게임이 이 방식을 쓰고 있지만 제정의해서 써야하는건 마찬가지 그리고 단일객체만 선언해서는 효력이 별로 없는것 같다;
위와 같은 방식으로 제작한다면 윈도우(창)모드에서는 이상없이 잘 작동한다. 하지만 전체화면일때 웹을 구동하는 것이 문제인데, 몇가지만 신경써준다면 구현이 가능하다.
1.
DirectX 9.0c를 기반으로 작성됨. SetDialogBoxMode() 함수를 이용하여 풀스크린에서도 윈도우 컨트롤을 사용할 수 있게 한다. 단 이렇게 하면 프레임 저하가 있으므로 웹브라우저가 보이지 않을때에는 꺼줘야 한다.
코드: |
m_pD3DDevice->SetDialogBoxMode(TRUE); |
2.
방식은 간단히 우선 DX 수직동기화를 화면 주파수가 아닌 IMM 으로 맞추고
창모드에서도 켜줘야 하지만 다이얼로그 모드를 켜주구요
웹창이 뜰때만 우선 이펙트 스왑을 COPY로 바꿔 놓고 Present를 무려 4번 합니다
3.
2번 방식을 잘 모르겠다면 그냥 프리젠트를 하지 않고 쓴느것도 하나의 방법,
4.
몇몇 오류사항들이 발생하는데, 전체화면에서 포커스를 읽어서 최소화될때라던지.. 이런 버그들이 있는데, 일단은 그런 이벤트가 발생시에는 웹창을 강제로 종료시켜 주었다.
이정도...
dx에 swf를 올리려면....
그냥 올릴수 없을까해서 검색해보면
먼저 스케일폼 요즘 겜 회사서 새로 시작하면 다 쓰졍
http://www.scaleform.com/
gfx 3.3까지 나왔네.. 버그는 많이 잡았나.. 이전 개발하던 갬도 이거 썻는데...
한국에서 많이 사용해서 그런지 홈페이지에 한글 페이지도 있네...
그치만 좀 쉽고 한마디로 꽁짜로 써볼까 하고... 실상 UI 까지 제작할건 아니라서..
메일링 리스트
문서화 미흡
이게 gfx초기버전이라네여
http://tulrich.com/geekstuff/gameswf.html
Freetype2 짜짤한 처리
이전 프로젝트 할때도 프리타입2를 사용했는데, 이번 회사와서도 붙이는 작업을 했다.
기존에는 GDI를 쓰고 있었는데, 중국쪽에서 바꿔달라고 했는거 같다. 여튼 작업시작은 이러한데,
중국쪽 폰트를 하면서 추가된 내용과
여기는 한글자씩 미리 찍어두는 시스템이라 추가된 내용을 정리해야 할듯 하다.
중국쪽 폰트하면서 추가된 내용으로는
-- [출처] FreeType Font에서 FT_PIXEL_MODE_MONO 로드부분.|작성자 샤르봉
특정폰트 특정크기 이하에서 폰트값이 0~256이 아닌 bit단위로 나오는 문제 해결
겜에서 사용하는 폰트 크기가 20pixel정도였는데 한글로 출력할때는 위와 같은 문제가 없었는데,
중문에서는 바로 문제가 되더라... 여튼 이거 위에꺼 보고 고쳤고
한글자씩 미리 찍어두는 시스템에서 추가된 내용으로는
http://www.winapi.co.kr/project/library/freetype/ft1.htm
http://www.winapi.co.kr/project/library/freetype/ft2.htm
http://www.winapi.co.kr/project/library/freetype/ft3.htm
http://www.winapi.co.kr/project/library/freetype/ft4.htm
http://www.winapi.co.kr/project/library/freetype/ft5.htm
http://www.winapi.co.kr/project/library/freetype/ft6.htm
http://www.winapi.co.kr/project/library/freetype/ft7.htm
위의 메뉴얼이 잘되어 있느니까 알아보고
문제는 베이스라인 계념인데 위에꺼 다 읽어봐도 결국 베이스라인 어캐 구한다는 없어서...
http://www.gpgstudy.com/forum/viewtopic.php?p=96321&sid=e6202af07a3e2b090a046918f41ae5f0
위의 글을 참고하면 될듯
int
baseLine;
int ascender; |
if (FT_IS_SCALABLE(face)) |
{ |
float y_scale = face->size->metrics.y_scale * 1.0f/64.0f * (1.0f/65536.0f); |
ascender = int (face->ascender * y_scale); |
|
} |
else |
{ |
ascender = int (face->size->metrics.ascender * 1.0f/64.0f); |
|
} |
|
baseLine = FONT_HEIGHT - ascender; |
위의 소스가 답인듯.. 참고로 픽셀 단위
아직도 뭔가를 더 고쳐야 할듯한데 좀 봅시다.
아 그리고 폰트 라이버리 버전 올려서 달면 폰트가 깨끗해지는듯한 느낌이?? 킁.. 이건 아닌가. 여튼 최신 버전 사용합시다.
라이트 미들웨어
www.illuminatelabs.com/products/beast
요즘 GI가 대세인데, 직접 만들어 쓰자하니 앞이 잘 보이지 않아
라이트 미들웨어라도 보야 되는데, 뭐 이건 사야 볼수 있으니...
일단 저런게 있는거라도 알아두자
FPSLIMITER
이런 프로그램이 있다네요.
풀 프레임으로(돌아가는 60프레임 이나 특정 프레임이 고정되지 않은 게임들)는 게임들을 강제로 원하는 프레엠에 마쳐서 돌릴수 있는 기능을 한다고 합니다. 개발자용이기 보다는 특정 게임을 구동시키는데 프레임이 많이 나오는 경우 다운시켜서 게임을 하기 위해 실행시킨다고 하네요 심즈3같은 경우 좋은 카드 쓰시는분들은 100프레임 이상 나오는데, 이럼 카드가 발열이 심하니까 리미터를 걸어서 하면 좋다 이런식으로 예길 하시던데요.
이전에 쉐이더 스터디 댕길때 특정 프로그램을 쓰면 비디오 카드의 스펙을 조절하여 태스트 할수 있다고 성훈이 형이 말했던 기억이 나긴 하는데 알켜주신 프로그램명은 솔직히 까먹었네요... 머였지
Shader Study 다음 발표를 Chapter 24: The Importance of Being Linear 요걸 하려 하는데
저번에 태우형 발표할때 웹에 자료들 잘 정리해서 하는걸 보니 있어버여서 나도 해봐야지 하며,
이번엔 발표준비과정을 좀 블로그에 남겨봐야지
ㅎㅎ
http://http.developer.nvidia.com/GPUGems3/gpugems3_ch24.html
흠.. 이론은 많은데 직접 적용해야되는 코드는 몇줄 안되는듯하다.
사실 이론들도 아래에 설명잘 되어 있던데 준비해 봐야지
관련 웹
http://http.developer.nvidia.com/GPUGems3/gpugems3_ch24.html
http://jufoot.egloos.com/1960058
http://cagetu.egloos.com/5148378
http://www1.devpia.com/Maeul/Contents/Detail.aspx?BoardID=51&MAEULNO=20&no=8350&page=1
http://blog.naver.com/sadiles/10073585297
발표 PPT 정리 / Shader Study - Gems3-3 Blend Shadpes : Breaking the Limit
발표 PPT 정리 / Shader Study - Gems3-2 Animated Crowd Rendering
발표 PPT 정리 / 3D Programing Study Dx9 7-4,5,6,7,8
발표 PPT 정리 / 3D Programing Study Dx9 7-1,2,3
발표 PPT 정리해서 올려봅니다.
하드에 보관해두다가는 언젠간 지울거 같아서..ㅜ.ㅜ...
스토리큐 다 좋은데 GIF 파일이 잘 안되는거 같네요