나의 큰 O는 log x야

고정 헤더 영역

글 제목

메뉴 레이어

나의 큰 O는 log x야

메뉴 리스트

  • 홈
  • Tag
  • Guestbook
  • Admin
  • 분류 전체보기
    • 적분史
    • 프로그래밍
      • PG어
      • 테크닉
      • 3D
      • Multi precision
      • 포니게임개발
      • 스페샬
      • NLP
    • 소리
    • 언어
      • 어원 이야기
      • 라틴어
    • 수업노트
      • 한국고대경제와사회
      • 영어구조론
      • 정보검색론
      • 인간의삶과역사속의미생물
      • 기타
    • 잉여
      • 미래
      • 수학
      • 종교개혁
    • 그냥 공부
    • 가짜 정보 정정합니다.

검색 레이어

나의 큰 O는 log x야

검색 영역

컨텐츠 검색

Direct3D

  • FreeType으로 Direct3D에 글자 출력하기

    2013.06.01 by ∫2tdt=t²+c

  • 리듬게임을 만들어보자 9. 그림 글자를 그려보자.

    2010.01.05 by ∫2tdt=t²+c

  • 리듬게임을 만들어보자 8. 로직과 디자인을 분리하자2

    2009.12.18 by ∫2tdt=t²+c

  • 리듬게임을 만들어보자 7. 로직과 디자인을 분리하자1

    2009.12.06 by ∫2tdt=t²+c

  • 리듬게임을 만들어보자 6. 직선, 사각형 그리기

    2009.11.29 by ∫2tdt=t²+c

  • 리듬게임을 만들어보자 5. 경우별로 나눠서 관리하기

    2009.11.26 by ∫2tdt=t²+c

  • 리듬게임을 만들어보자 4. 행렬변환을 통한 회전, 확대/축소

    2009.11.24 by ∫2tdt=t²+c

  • 리듬게임을 만들어보자 3. 다양한 그리기 효과

    2009.11.22 by ∫2tdt=t²+c

FreeType으로 Direct3D에 글자 출력하기

FreeType을 이용해서 Direct3D에 폰트를 출력하는 방법에 대해서 자세한 문의가 자주 들어오더라구요. (2013/04/06 - [프로그래밍] - Direct3D에 FreeType로 폰트 출력하기) 그래서 혹시나마 도움이 되고자 그나마 얕은 코드 지식 드러내 가며 글을 씁니다. 요 코드는 이전에 개발하던 리듬게임과 현재 개발하는 포니게임에 사용하고 있는 자체제작 엔진인 Interstella의 일부분을 발췌한 것입니다. c 11코드와 ISI 클래스의 메소드들이 사용되어서 난해할수 있지만, 최대한 주석을 달고 넘어갈테니 알아서 보시길ㅠㅠ (저걸 일일히 D3D용으로 바꿔서 올릴만큼 잉여력이 있지는 않아서) 코드를 보기에 앞서 어떤 방식으로 구현을 했는지 간단하게 설명을 하자면, 1. 1024x1024 ..

프로그래밍/3D 2013. 6. 1. 04:13

리듬게임을 만들어보자 9. 그림 글자를 그려보자.

글자 출력은 D3D에서 제공하는 ID3DXFont 인터페이스를 이용해서 쉽게 할 수 있다. 그런데 그렇게 해서 그린 글자는 별로 멋지지가 않다. 그렇다면 아예 스프라이트로 글자 모양을 준비해 놓고선, 이것을 이용해서 문자열을 출력한다면 어떨까? 이렇게 0~9까지 10개의 문자를 준비해놓으면 정말 멋지게 숫자를 출력할 수 있다. 자, 스프라이트를 이용해서 문자열을 출력하는 클래스 GFont를 만들어보자. struct CharDat { UINT sprindex; //문자가 담긴 스프라이트 번호 UINT width; //문자의 가로 길이 UINT height; //문자의 세로 길이 }; class GFont { protected: GSprites m_sprs; CharDat m_cd[96]; public: e..

프로그래밍/스페샬 2010. 1. 5. 22:31

리듬게임을 만들어보자 8. 로직과 디자인을 분리하자2

저번에 파일로부터 텍스쳐와 스프라이트를 불러들이는 부분을 짜 보았다. 이번에는 로직과 디자인을 확실히 분리해보자. 그러기 위해서 그리기를 수행하는 최소의 단위를 설정해보자. 그 최소의 단위를 '그리기 객체'라고 부르겠다. 프로그래머는 그리기 객체를 여럿 화면에 배치해 놓으면, 그리기 객체는 알아서 자기가 화면에 그림을 그려주는 식이다. 물론 그리기 객체가 어떤 그림을 그릴지는 디자인하는 사람이 잘 정해줄거다. 그리기 객체의 행동을 나타내는 그리기 코드도 정의해보자. 이런 명령어들이 그리기에 주로 필요할 것 같아서 정해보았다. setdata(byte index, long x, long y) : index번호의 데이터를 (x, y)로 설정한다. draw(word index, short x, short y, ..

프로그래밍/스페샬 2009. 12. 18. 23:09

리듬게임을 만들어보자 7. 로직과 디자인을 분리하자1

이쯤되면 어지간한 그래픽 출력은 다 끝났다. 이제 본격적으로 게임로직을 짜는 부분에 들어가자.... 가기전에 먼저 로직과 디자인을 분리해야 한다. 디자인은 프로그래머의 몫이 아니다. 디자인은 디자인하는 사람이 열심히 하고, 프로그램에서는 외부에서 디자인된 파일을 읽어와서 적절하게 화면에 그려주도록 하면 된다. 먼저 텍스쳐와 스프라이트 데이터들을 외부에서 읽어오도록 만들어보자. 텍스쳐를 읽어오기 위해서는 텍스쳐의 주소들을 모아놓은 파일이 필요하다. 그렇게 하기 위해서 문자열 배열을 관리하는 클래스 GStrings를 만들어보자. class GStrings { protected: vector m_vstr; public: const wstring& operator[](size_t i) const; //const..

프로그래밍/스페샬 2009. 12. 6. 14:27

리듬게임을 만들어보자 6. 직선, 사각형 그리기

그래픽 처리를 제대로 하자면, 미리 준비되어있는 그림파일을 화면을 그리는 것 말고도, 직선을 그리는 것이나, 사각형을 그리는 것 등등이 필요하다. 이번에는 직선과 사각형 그리는 것을 구현해보자. D3D에서는 직선을 쉽게 그릴 수 있도록 ID3DXLine이라는 인터페이스를 제공한다. ID3DXLine은 D3DXCreateLine함수를 이용하여 간단히 만들수 있다. LPD3DXLINE pline; D3DXCreateLine(pd3dd, &pline); 참, 쉽죠? ID3DXLine으로 직선을 그리는 순서는 다음과 같다. 1. ID3DXLine::Begin함수로 그리기를 준비한다. 2. ID3DXLine::Draw함수로 직선을 그리고 싶은 만큼 그린다. 3. ID3DXLine::End함수로 그리기를 마친다. ..

프로그래밍/스페샬 2009. 11. 29. 21:11

리듬게임을 만들어보자 5. 경우별로 나눠서 관리하기

게임을 켜면 곧바로 게임이 시작되는건 아니다. 세부 설정을 조작하는 부분도 있고, 로딩하는 부분도 있고, 실제로 게임을 하는 부분도 있다. 이런 경우별로 따로따로 코딩을 해줘야 한다. 가장 손쉬운 방법은 if-else문을 이용하는 것이다. void GGame::OnProc() { if(state==Select_Game) { ... } else if(state==Load_Game) { ... } else if(state==Play_Game) { ... } ... } 이 짓을 OnProc(처리하는 부분)말고도 OnDraw(그리는 부분), 키입력 받는 부분 등등에서 다 해줘야 한다. 함수가 지저분하게 계속 부풀어오르다가 터져버릴지도 모른다. (ㅡ,,ㅡ) 게다가 각종 상태별로 필요한 변수들도 한 클래스에 모조리..

프로그래밍/스페샬 2009. 11. 26. 17:39

리듬게임을 만들어보자 4. 행렬변환을 통한 회전, 확대/축소

이번에는 스프라이트를 확대/축소하거나 회전해서 출력할 수 있게 해보자. 이런 까다로운 일들을 하기 위해선 '행렬'이라는 걸 알아야한다. 하지만 여기서 행렬에 대해서 자세히 설명할 시간은 없고, 3D프로그래밍을 할때는 행렬을 통해서 여러가지 변환을 한다는 사실만 알아두도록 하자. D3D에서는 행렬을 위한 자료형으로 D3DXMATRIX타입을 제공한다. 그리고 편리한 행렬 계산을 위해 D3DXMatrix~~~ 시리즈 함수를 제공한다. D3DXMATRIX 타입에 각종 연산자(대입, 곱하기, 더하기, 빼기 등등)가 정의되어 있으므로 연산도 편리하게 할 수 있다. 점 (x, y, z, 1)에다가 4차정사각행렬을 곱함으로써 행렬변환은 이루어진다. 점에다가 특정한 행렬을 곱하면 여러가지 효과를 줄 수 있다. ID3DX..

프로그래밍/스페샬 2009. 11. 24. 22:04

리듬게임을 만들어보자 3. 다양한 그리기 효과

멋진 그래픽을 만드려고 노력하다 보면 알파블렌딩만으로는 원하는 걸 만들지 못할 때가 있다. 그래서 다양한 그래픽 효과를 여기서 추가해보고자 한다. D3D에서는 Render State라고 해서 렌더링 시에 여러가지 설정을 줄수 있게 해놓았다. IDirect3DDevice9::SetRenderState로 RenderState를 설정할 수 있고 IDirect3DDevice9::GetRenderState로 RenderState값을 가져올 수 있다. 다음과 같이 쓰면 된다. SetRenderState( 상태 종류, 설정할 값 ); 예를 들자면 m_pd3dd->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_ALWAYS); 이런 식으로 하면 된다. 여기서는 특히 중요한 몇 개의 설정들을 살펴보..

프로그래밍/스페샬 2009. 11. 22. 22:41

추가 정보

인기글

최신글

글쓴이 ∫2tdt=t²+c

블로그 이미지

제가 안 것의 대부분은 인터넷으로부터 왔으니, 다시 인터넷에게 돌려주어야 합니다. bab2min@gmail.com

댓글

태그

자연언어처리 토픽 모델링 python NLP 문헌정보통계 텍스트 마이닝 php 악보 한국고대경제와사회 우리역사바로알기대회 kiwi BigFloat Direct3D 정보조직론 pg어 영어구조론 리듬게임 c++ 포니게임 라틴어

방문자

오늘
어제
전체

페이징

이전
1 2
다음
나의 큰 O는 log x야
메일 bab2min@gmail.com
Skin Images are from Stinkehund.

티스토리툴바