【備忘録】Dreamcastで透過PNGを表示する方法
作成日:2025-08-11 15:15:21
最新更新日:2025-08-11 15:18:11
前提条件
・kos-portでlibpngをいれている
やり方
PVR_LIST_OP_POLYではなくPVR_LIST_TR_POLYを。
png_to_textureではPNG_FULL_ALPHAを使う。
描画時はPVR_TXRFMT_ARGB4444を。
コード
//画像をロード
pvr_ptr_t image = pvr_mem_malloc(512 * 256 * 2);
png_to_texture("/rd/image.png", image, PNG_FULL_ALPHA);
//描画
pvr_poly_cxt_t cxt;
pvr_poly_hdr_t hdr;
pvr_vertex_t vert;
pvr_poly_cxt_txr(&cxt, PVR_LIST_TR_POLY, PVR_TXRFMT_ARGB4444, original_w, original_h, image, PVR_FILTER_BILINEAR);
pvr_poly_compile(&hdr, &cxt);
pvr_prim(&hdr, sizeof(hdr));
vert.argb = PVR_PACK_COLOR(1.0f, 1.0f, 1.0f, 1.0f);
vert.oargb = 0;
vert.flags = PVR_CMD_VERTEX;
vert.x = x;
vert.y = y;
vert.z = 1.0f;
vert.u = 0.0f;
vert.v = 0.0f;
pvr_prim(&vert, sizeof(vert));
vert.x = w + x;
vert.y = y;
vert.z = 1.0f;
vert.u = 1.0f;
vert.v = 0.0f;
pvr_prim(&vert, sizeof(vert));
vert.x = 1.0f + x;
vert.y = h + y;
vert.z = 1.0f;
vert.u = 0.0f;
vert.v = 1.0f;
pvr_prim(&vert, sizeof(vert));
vert.x = w + x;
vert.y = h + y;
vert.z = 1.0f;
vert.u = 1.0f;
vert.v = 1.0f;
vert.flags = PVR_CMD_VERTEX_EOL;
pvr_prim(&vert, sizeof(vert));
ログインするとコメントを書くことができます
もっとコメントを見る