Software Requirements Specification (SRS)
1. Overview
본 문서는 grender 모듈의 소프트웨어 요구사항을 정의한다.
grender는 Grap 시스템의 렌더링 API 레이어이며, 렌더링 장치와 상위 애플리케이션 사이의 인터페이스를 제공한다.
이 모듈은 다음을 제공한다.
- 렌더링 장치 인터페이스
- 렌더링 명령 타입
- 리소스 핸들 타입
- 기본 렌더링 데이터 구조
- 공통 유틸리티
grender는 렌더링 구현을 직접 수행하지 않으며, 렌더링 장치 인터페이스 정의만 담당한다.
2. System Scope
grender는 Grap 시스템에서 렌더링 API 레이어를 담당한다.
이 모듈은 다음 계층 사이의 인터페이스 역할을 수행한다.
- 상위 애플리케이션 계층
- 렌더링 장치 구현 계층
본 모듈은 렌더링 장치 인터페이스를 정의하고 렌더링 명령 및 데이터 타입을 제공한다.
3. Module Structure
현재 코드 기준 grender 모듈 구조는 다음과 같다.
grender/
├─ common/
│ ├─ config.hpp
│ ├─ result.hpp
│ └─ assert.hpp
│
├─ id/
│ ├─ ids.hpp
│ └─ handle.hpp
│
├─ enums/
│ ├─ primitive.hpp
│ ├─ format.hpp
│ └─ flags.hpp
│
├─ types/
│ ├─ frame_desc.hpp
│ ├─ draw_cmd.hpp
│ ├─ vertex_format.hpp
│ └─ resource_desc.hpp
│
├─ device/
│ └─ render_device.hpp
│
├─ grender.hpp
└─ tests/
└─ smoke.cpp
4. Functional Requirements
4.1 Rendering Device Interface
시스템은 렌더링 장치를 제어하기 위한 인터페이스를 제공해야 한다.
렌더링 장치는 다음 기능을 제공해야 한다.
- 렌더링 장치 초기화
- 렌더링 장치 종료
- 프레임 시작
- 렌더 명령 처리
- 프레임 종료
- 화면 출력
렌더링 장치는 IRenderDevice 인터페이스를 통해 정의된다.
4.2 Frame Description
시스템은 렌더링 프레임 정보를 표현하기 위한 데이터 구조를 제공해야 한다.
프레임 정보에는 다음 정보가 포함된다.
- 렌더링 너비
- 렌더링 높이
- 프레임 클리어 색상
프레임 정보는 FrameDesc 구조체로 정의된다.
4.3 Draw Command
시스템은 렌더링 명령을 표현하기 위한 데이터 구조를 제공해야 한다.
렌더 명령에는 다음 정보가 포함된다.
- 정점 버퍼 핸들
- 정점 개수
- 프리미티브 타입
렌더 명령은 DrawCmd 구조체로 정의된다.
4.4 Resource Handles
시스템은 렌더링 리소스를 식별하기 위한 핸들 타입을 제공해야 한다.
핸들은 다음 리소스를 식별하는데 사용된다.
- VertexBuffer
- IndexBuffer
- Texture
- Pipeline
리소스 핸들은 ids.hpp 및 handle.hpp에서 정의된다.
4.5 Enumerations
시스템은 렌더링 관련 열거형을 제공해야 한다.
현재 코드에 정의된 열거형은 다음과 같다.
PrimitiveTypeFormatFlags
열거형은 enums/ 디렉토리에서 정의된다.
4.6 Result Handling
시스템은 함수 결과 상태를 표현하기 위한 타입을 제공해야 한다.
결과 상태는 Result 타입으로 정의되며 다음 상태를 표현한다.
- Success
- Failure
또한 다음 헬퍼 함수가 제공된다.
succeededfailed
4.7 Assertion Utilities
시스템은 내부 검증을 위한 assertion 기능을 제공해야 한다.
assertion 기능은 assert.hpp에서 정의된다.
5. Non-Functional Requirements
5.1 Modular Design
grender 모듈은 독립적인 라이브러리로 설계되어야 한다.
모듈 내부 구현은 외부 시스템과 분리되어야 한다.
5.2 Header-Based API
grender의 공개 API는 grender.hpp를 통해 접근 가능해야 한다.
해당 헤더는 다음 모듈을 포함해야 한다.
common
id
enums
types
device
5.3 Test Verification
시스템은 기본 기능 검증을 위한 테스트를 제공해야 한다.
테스트는 tests/smoke.cpp에 정의된다.
테스트는 다음을 검증한다.
- API 버전 접근
- FrameDesc 기본 값
- DrawCmd 유효성 검사
- Handle 검증
- PrimitiveType 열거형
- Result 헬퍼 함수
6. Assumptions
본 문서는 제공된 코드 기반으로 작성되었으며 다음 사항을 가정한다.
grender는 렌더링 구현을 직접 포함하지 않는다.- 렌더링 장치 구현은 별도의 모듈에서 제공된다.
7. Limitations
본 문서는 현재 코드에 정의된 타입과 인터페이스만을 대상으로 한다.
코드에 존재하지 않는 기능은 문서에 포함되지 않는다.