반응형


Xfile을 기본 메인 파일에 있을 때 텍스쳐가 잘 불러와 지다가 파일들을
한 폴더에 몰아 넣고서 폴더 경로를 지정해 줄때 파일은 읽어 지는데
텍스쳐 파일이 안 넘어 올때가 있다.

그 이유는 D3DXLoadMeshFromX에서는 잘 읽어 오는데 D3DXCreateTextureFromFile에서 전체 경로를 읽어오지 못하고 파일 이름으로만 읽어져서 문제가 생긴다. 이 경우 폴더 경로를 모두 읽을수 있도록 파일 경로를 수정하여 위치를 지정해 주어야 한다.

예) "project\\skysphere.x"
위의 경로를 텍스쳐 에서는 skysphere만 들어 오기 떄문에 파일 앞의 경로까지 읽어 위치를 찾고난 후 path에 저장한다.

 int lastSlash = filename.find_last_of( '\\' );

 std::string path = filename.substr( 0, lastSlash + 1 );

 std::string texturePath = path + mtrls[i].pTextureFilename;
 D3DXCreateTextureFromFile( m_Device, texturePath.c_str(),
                                             &tex);

다음과 같이 수정 해주면 텍스쳐 파일이 읽어올 수 있다.

반응형
반응형
GetAsyncKeyState로 키입력 처리할때 키를 누르고 있으면 연속으로 눌리는 현상을 막기위해 

Time.h 파일에 있는 clock을 사용한다.

clock 이란 프로그램이 실행된 뒤로 시간이 얼마나 흘렀는지 ms(1/1000초) 단위로 반환하는 함수

clock_t는 clock()의 반환 값을 담는 변수 타입으로 int로 해도 문제 없다.

소스
#include <Windows.h>
#include <Time.h>


int
KeyTime = 100;
clock_t KeyTimeCheck[256];


bool
IsKeyDown(int vKey)
{
        clock_t now = clock();

        
        if(GetAsyncKeyState(vKey) & 0x8000 &&
           now - KeyTimeCheck[vKey] >= KeyTime)
        {
                KeyTimeCheck[vKey] = now;

                return TRUE;
        }        

        return FALSE;
}

반응형
반응형
#ifndef와 #pragma once 는 둘다 헤더파일의 중복을 피하게 해준다.

#ifndef의 경우에는 언어적인 문법을 이용하여 헤더파일의 중복을 피하기 위해 사용되고
#pragma once의 경우에는 컴파일러에서 지원하는 방식이다. 대부분의 컴파일러가 지원하기
하지만, 언어적인 범용성이 더 넓은 것은 #ifndef라고 할수 있다. 하지만, 속도 면서에는
#pragma once가 헤더 파일을 열지 않기 때문에 더 빠르다.

반응형

+ Recent posts