반응형

위 그림을 보면 tex의 자료형이 float 로 되어있다 그덕분에 위처럼 나온다

아래처럼 float2로 만 해줘도 제대로 나올수 있다, hlsl은 이런 오타로 인한 버그를 조심해야 되는것 같다

 

반응형
반응형

윈도우 제목이 한글자만 로딩되는 버그다, 그림에서는 Project1 로딩되어야 하는데

한글자만 로딩되고 있다, 알고보니

세팅을 손보면서 Preprocessor Definitions 부분을 지워버렸다, 사실 이부분에

 

 아래와 같은

 

_UNICODE;UNICODE;

 

매크로가 들어가야 유니코드 함수를 온전히 사용할 있다, 매크로가 없을 경우 빌드에는 문제 없지만, 위와같은 버그가 발생한다.

반응형
반응형

마우스 위치가 맞지 않는다

정확히 가로 세로 10px 정도 비껴간 느낌이다, 따로 설정을 해놓은 적이 없는데

알고보니

 

 

윈도우창에 시스템 메뉴를 추가한뒤에, ClientSize로 전체적으로 초기화 해야되는데

ScreenSize로 초기화 해버려서 발생했던 것 

 

 

 

아래와 같이 클라이언트 사이즈 구한뒤 초기화 작업을 다시함

 

 

 

그결과 ImGUI가 마우스 위치를 제대로 인식하고, 폰트 깨짐 현상도 없어짐

 

 

반응형
반응형


double	g_timePerFrame;// 임의로 정해놓은 프레임 제한시간


int APIENTRY WinMain(
	HINSTANCE a_hInst, 
	HINSTANCE a_hPrevInst, 
	LPSTR a_lpszCmdParam, 
	int a_iCmdShow)
{	
	//윈도우 클래스 등록
	if (!InitWndClass(a_hInst))
	{
		return false;
	}

	//윈도우 생성 및 화면에 보여주기
	if (!InitInstance(a_hInst, a_iCmdShow))
	{
		return false;
	}

	
	MSG Message;

	std::chrono::system_clock::time_point worktime_old = std::chrono::system_clock::now();
	std::chrono::system_clock::time_point worktime_now;
	g_timePerFrame = 200.0; 
	while (1)
	{
		if (PeekMessage(&Message, 0, 0, 0, PM_REMOVE))
		{
			if (Message.message == WM_QUIT || Message.message == WM_DESTROY)
			{
				break;
			}
			TranslateMessage(&Message);
			DispatchMessage(&Message);
		}
		else
		{
			worktime_now = std::chrono::system_clock::now();

			//루프가 끝나고, 다시 시작하는 시점 까지의 경과시간(공백시간)
			std::chrono::duration<double, std::milli> work_time = worktime_now - worktime_old; 
            
			if (work_time.count() < g_timePerFrame)
			{
				double d = g_timePerFrame - work_time.count(); //임의로 정해놓은 프레임 제한시간에서 실제 프레임당 걸리는 시간을 빼준다, 그렇게 남는시간은
				std::chrono::duration<double, std::milli> sleepTime(d);
				std::chrono::milliseconds sleepTime_ms_duration = std::chrono::duration_cast<std::chrono::milliseconds>(sleepTime);
				std::this_thread::sleep_for(sleepTime_ms_duration); // 해당 thread를 sleep 시키는 시간으로 쓴다
			}
			worktime_old = std::chrono::system_clock::now();
			
            
			//ToDo : GameLogic 처리 Update, Rendering
		}
	}
	return Message.wParam;

}
반응형
반응형

Sprite Animation 구현 및 공에 중력 적용

 

공에 중력 적용및 튕기는 코드 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
float THROW_FORCE_Y = -10.f;
float THROW_FORCE_X = 10.f;
constexpr float Gravity = 0.4f; //중력
 
void Ball::Update(float a_deltaTime, RECT a_pikachuColliderRect)
{
    //화면경게선에 왔을때 튕기기(반대방향으로 전환)
    if (m_y <= 0)
    {
        THROW_FORCE_Y *= -1;
    }
    if (m_y >= GROUND)
    {
        THROW_FORCE_Y *= -1;
    }
    if (m_x <= 0)
    {
        THROW_FORCE_X *= -1;
    }
    if (m_x >= 800 - 42)
    {
        THROW_FORCE_X *= -1;
    }
 
    // 플레이어와 부딛혔을때
    if (a_pikachuColliderRect.left <= m_x && a_pikachuColliderRect.right >= m_x 
    && a_pikachuColliderRect.top <= m_y && a_pikachuColliderRect.bottom >= m_y)
    {
        THROW_FORCE_Y *= -1;
        THROW_FORCE_X *= -1;
    }
 
 
    //속도 줄어들기
    if (THROW_FORCE_X > 0)
    {
        THROW_FORCE_X -= 0.01f;
    }
    if (THROW_FORCE_Y > 0)
    {
        THROW_FORCE_Y -= 0.1f;
    }
    
 
    m_y += (int)(THROW_FORCE_Y * a_deltaTime);
    m_x += (int)(THROW_FORCE_X * a_deltaTime);
    THROW_FORCE_Y += Gravity;
    
    
    //애니메이션
    switch (m_AniState)
    {
    case Ball::Idle:
        m_Animations[Idle]->Update(a_deltaTime * (THROW_FORCE_X + THROW_FORCE_Y));
        break;
    case Ball::Spiked:
        m_Animations[Spiked]->Update(a_deltaTime);
        break;
    default:
        break;
    }
 
}
 
cs
반응형
반응형

WM_MOUSEMOVE 메시지일때

_lParam 에 있는 mouse x, y 좌표값 가져와서 title 에 보여주기

 

반응형
반응형

Astar 알고리즘 그리드맵 툴

-그리드 맵 편집 기능

-현재 경로에 있는 맵파일 인식

-Astar 알고리즘을 재현

 

 

 

현재 경로에 있는 맵파일 인식

 

 

맵 파일 편집 및 저장

 

 

 

Astar 알고리즘 실행, 최단경로 찾기

경로 찾기 하는 부분에서 버그 발생

반응형
반응형

Breadth First Search (너비 우선 탐색) 응용, 미로 탈출

1번째

 

2번째

 

반응형
반응형

Right Hand Rule(우수법) 미로 탈출

1번째 시도
2번째 시도

 

반응형
반응형

난수를 생성해서 50% 확률로 미로를 파는 방향을 정함

 

1번째
2번째
3번째

반응형

+ Recent posts