Skip to main content

API Reference

1. Overview

본 문서는 grender 라이브러리의 공개 API를 기술한다.

grender는 Grap 시스템의 렌더링 API 레이어이며 다음 요소들을 외부에 제공한다.

  • 공통 유틸리티
  • 리소스 핸들 타입
  • 렌더링 열거형
  • 렌더링 데이터 구조
  • 렌더링 장치 인터페이스

이 문서는 외부 코드에서 사용할 수 있는 API 요소만을 기술한다.


2. Public API Entry Point

grender 라이브러리의 공개 API는 다음 헤더를 통해 접근된다.

#include "grender/grender.hpp"

이 헤더는 grender 라이브러리의 umbrella header이며 모든 공개 API를 포함한다.


3. Public Module Structure

공개 API는 다음 모듈로 구성된다.

grender
├─ common
├─ id
├─ enums
├─ types
└─ device

각 모듈의 역할은 다음과 같다.

ModuleDescription
common공통 유틸리티
id리소스 핸들 타입
enums렌더링 열거형
types렌더링 데이터 구조
device렌더링 장치 인터페이스

4. API Categories

grender API는 다음 범주로 구성된다.

CategoryDescription
Configuration라이브러리 설정 정보
Result Handling함수 결과 타입
Handle Types렌더링 리소스 핸들
Enumerations렌더링 상수 타입
Data Structures렌더링 데이터 구조
Rendering Device렌더링 장치 인터페이스

5. Configuration API

라이브러리 구성 정보는 다음 요소를 통해 제공된다.

config::api_version

6. Result API

함수 실행 결과 상태는 다음 타입으로 표현된다.

enum class Result

다음 헬퍼 함수가 제공된다.

bool succeeded(Result)
bool failed(Result)

7. Handle API

렌더링 리소스는 핸들 타입을 통해 식별된다.

다음 핸들이 정의되어 있다.

VertexBufferHandle
IndexBufferHandle
TextureHandle
PipelineHandle

다음 invalid handle 상수가 제공된다.

kInvalidVertexBuffer
kInvalidIndexBuffer
kInvalidTexture
kInvalidPipeline

핸들 검증 함수

is_valid(handle)
is_invalid(handle)

8. Enumerations API

다음 열거형이 정의되어 있다.

PrimitiveType
Format
Flags

9. Data Structure API

렌더링 API에서 사용되는 주요 데이터 구조는 다음과 같다.

FrameDesc
DrawCmd
VertexFormat
ResourceDesc

각 구조체는 렌더링 설정 및 렌더 명령 전달에 사용된다.


10. Rendering Device API

렌더링 장치는 다음 인터페이스를 통해 정의된다.

struct IRenderDevice

렌더링 장치는 다음 함수를 제공해야 한다.

init(ghost::Window&)
shutdown()
resize(uint32_t, uint32_t)
begin_frame(const FrameDesc&)
draw(const DrawCmd&)
end_frame()
present()

11. Usage Example

다음은 grender API 사용 예시이다.

#include "grender/grender.hpp"

using namespace grender;

FrameDesc frame;

DrawCmd cmd;

cmd.vertex_buffer = VertexBufferHandle{1};
cmd.vertex_count = 3;
cmd.primitive = PrimitiveType::TriangleList;

12. Verification

기본 API 접근 및 동작은 다음 테스트에서 확인된다.

tests/smoke.cpp

테스트 항목

  • API version 접근
  • FrameDesc 기본 값
  • DrawCmd validation
  • Handle validation
  • PrimitiveType enum
  • Result helper functions