728x90
반응형
NanoVG API를 사용한 별 만들기를 해보았다.
기존 demo.c에 소스코드를 추가했다.
demo.c
void drawStar(NVGcontext* vg, float cx, float cy, float vertexCnt, float r)
{
if (vertexCnt <= 1)
{
return;
}
nvgSave(vg);
nvgBeginPath(vg);
//생성하고자 하는 cx, cy 2차원 좌표에 먼저 점을 찍는다.
nvgMoveTo(vg, cx, cy);
//반지름 r만큼 cx에 더하여 별의 첫 꼭지점을 찍어준다.
nvgLineTo(vg, cx + r, cy);
float xx, yy;
float a = (360.0f / vertexCnt) * NVG_PI / 180.0f; //꼭지점의 개수만큼 중심각을 나눈다.
//움푹 파인곳과 별의 꼭지점을 표현하기 위해 vertexCnt에 2를 곱한다.
for (int i = 1; i <= vertexCnt * 2; i+=2)
{
//움푹 파인곳에 점을 찍기 위한 연산.
xx = cx + r / 2 * cosf(i * a / 2);
yy = cy + r / 2 * sinf(i * a / 2);
nvgLineTo(vg, xx, yy);
//다음 별의 꼭지점을 위한 연산.
xx = cx + r * cosf((i + 1) * a / 2);
yy = cy + r * sinf((i + 1) * a / 2);
nvgLineTo(vg, xx, yy);
}
nvgClosePath(vg);
//색을 채워준다.
nvgFillColor(vg, nvgRGBA(255, 255, 0, 255));
nvgFill(vg);
nvgRestore(vg);
}
//파라미터값에 따른 별의 모습
drawStar(vg, 200.0f, 200.0f, 2.0f, 50.0f);
drawStar(vg, 300.0f, 300.0f, 3.0f, 50.0f);
drawStar(vg, 400.0f, 400.0f, 5.0f, 50.0f);
drawStar(vg, 500.0f, 500.0f, 10.0f, 50.0f);
drawStar(vg, 600.0f, 600.0f, 20.0f, 50.0f);
실행 모습
728x90
반응형
'OpenGL NanoVG' 카테고리의 다른 글
OpenGL NanoVG를 이용한 간단한 눈 내리는 효과 (0) | 2023.04.18 |
---|