본문 바로가기

Old91

Event Win API 동작구조 WinMain() 함수를 통해 윈도우 응용 프로그램이 시작됨 사용자 입력 이벤트는 모두 메세지로 전환됨 윈도우 운영체제는 이벤트에 따른 메세지를 메세지 큐에 추가 메인 메세지 루프는 메세지 큐에서 메세지를 꺼내서 처리 (FIFO 구조) 윈도우 종료 메세지를 처리하면 메인 메세지 루프가 종료되고 응용 프로그램도 종료됨 C#에서 이벤트 작성 과정 이벤트 발생 시 처리해줄 메서드 작성 (이벤트 핸들러) 이벤트 핸들러의 형태와 일치하는 델리게이트 선언 (System.EventHandler 델리게이트를 사용하면 이 과정 생략됨) 이벤트 선언 (미리 정의된 이벤트인 경우 이 과정 생략됨) 이벤트에 이벤트 처리기 등록 이벤트 발생 이벤트와 대리자의 차이점 : 이벤트는 외부에서 직접 사용할 수 .. 2023. 8. 31.
Mesh와 WireframeRendering Mesh : 삼각형을 중심으로 물체에 관련된 정보를 기록한 데이터 삼각형을 이루는 각 점의 위치를 가지고 있어야 함 물체를 표현하는데 활용할 수 있는 색상이나 방향과 같은 다양한 부가 정보도 담아서 제공 위치 정보와 부가 정보를 묶은 특별한 점을 정점이라고 함 즉, 메시는 정점들이 모인 데이터 정점 버퍼와 인덱스 버퍼에 데이터 저장 ex) 정사각형을 구성하는 메시 정보 기준점 (0, 0) P0(-0.5, -0.5), P1(-0.5, 0.5), P2(0.5, 0.5), P3(0.5, -0.5) 정점 버퍼 순서 좌표 0 (-0.5, -0.5) 1 (-0.5, 0.5) 2 (0.5, 0.5) 3 (0.5, -0.5) 인덱스 버퍼 순서 삼각형 정점 순서 0 0 0 1 0 1 2 0 2 3 1 0 4 1 2 5 .. 2023. 8. 18.
게임 서버 - 관계형 데이터베이스와 NoSQL 관계형 데이터베이스의 부족한 점 기존 테이블에 레코드 1억 개가 이미 들어있다고 가정 필드 하나를 추가하면 데이터베이스 엔진은 기존에 있는 레코드 1억 개 전체에 필드를 추가해야 함 프로그램 구조가 복잡해질수록 테이블 구조도 변경, 유지보수하면서 점점 힘들어짐 데이터베이스의 수직분산과 수평분산 데이터베이스의 수직 분산: 여러 테이블을 각각 여러 데이터베이스 컴퓨터에 나눔 데이터베이스의 수평 분산: 테이블 하나가 레코드를 1억 개 가졌다고 가정하고 데이터베이스 컴퓨터가 100대 주어졌다면, 각 컴퓨터에 데이터베이스를 설치하고 1억을 100으로 나눈 수인 100만 개씩 레코드를 분배, 이렇게 수평으로 분산된 데이터베이스에서는 각 컴퓨터가 큰 테이블 1개를 조각조각 가진 셈으로, 이를 샤드라고 함 이 상태에서.. 2023. 8. 16.
RPG Project 오류 일지 - Respawn 오브젝트 풀에 10개의 오브젝트를 할당해두고, 몬스터가 죽어도 전체 개수는 계속 10개로 유지하도록 구현했다. 구현하는 중에 오브젝트 풀을 Manager로 선언해서 싱글톤 패턴을 적용할까 싶었지만, Monster에만 관여하므로 굳이 싶었다.. (프리팹이 더 다양했으면 처음부터 Manager로 올렸을거다) 그래서 최대한 지금 상태에서 생각할 수 있는 방법을 적용하려고 머리를 굴렸다. 유니티 함수의 생명주기를 다 고려해보다가 죽은 몬스터의 인덱스를 찾는건 Update()가 가장 적절하다고 생각했고, 리스폰해주는 함수의 위치를 생각하는건 꽤 어려웠다.. 이 참에 생명 주기 함수를 모두 복습했고, 코루틴도 복습했지만 적절한 위치가 없었고, 코루틴은 메모리 낭비가 큰 것 같아 InvokeReapeating을 사용.. 2023. 8. 15.
윈도우 프로그램 분석 1. WinMain 함수 윈도우 응용 프로그램의 시작 진입점을 나타내는 함수 윈도우 응용 프로그램이 실행되면 윈도우 운영체제는 이 함수를 실행하여 응용 프로그램을 시작 이 함수가 종료(반환)되면 응용 프로그램이 종료됨 일반적인 윈도우 응용 프로그램이 되려면 이 함수는 다음과 같은 기본적인 일을 처리해야 함 윈도우 클래스를 시스템에 등록 (Register Window Class) 응용 프로그램 초기화 및 주 윈도우 생성 메시지 루프 2. 윈도우 프로시져 윈도우 클래스를 등록할 때 설정한 윈도우 프로시져 함수 주 윈도우가 처리해야 하는 윈도우 메시지가 주 윈도우에게 전달될 때 호출되는 메시지 처리 함수 메시지 루프에서 DispatchMessage() 윈도우 API 함수를 호출하면 WindProc()함수가 실.. 2023. 8. 3.
DirectX12 - Project Setting 응용 프로그램 마법사가 자동으로 생성한 소스 파일 project명.h project명.cpp framework.h: 표준 시스템 포함 파일 또는 프로젝트를 위한 특정 포함 파일들을 포함하는 파일 Resource.h: 윈도우의 리소스(메뉴, 대화상자 등)의 ID를 정의하는 헤더 파일 targetver.h: 응용프로그램의 플랫폼을 정의하는 헤더 파일 1) framework.h의 파일명을 "stdafx.h"로 변경 : 프로그램에서 사용하는 주요 헤더 파일들을 포함, 나중에 이 파일에 Direct3D 12의 헤더 파일을 추가할 것 2) stdafx.cpp 파일 추가 후 헤더 include 3) 4) 프로젝트명.cpp 파일에 선언된 헤더 이름을 바꿔주고 빌드하면 설정 끝! 2023. 8. 3.