トップページ > 記事閲覧
ARGB32 Premultipliedの画像データを描画可能形式にする手法
名前:猫の湯飲み 日時: 2024/08/17 00:25

いつもお世話になっております。 ARGB32 Premultipliedの画像データを CreateARGBF32ColorBaseImageで作成した基本イメージデータ型BASEIMAGE に格納して描画しようと考えております。 このとき、tagBASEIMAGE型の void *GraphData ;// グラフィックイメージ はどのような色情報の配置になっているのか教えていただけないでしょうか? お手数おかけしますがよろしくお願いいたします。
メンテ

Page: 1 |

Re: ARGB32 Premultipliedの画像データを描画可能形式にする手法 ( No.1 )
名前:管理人 日時:2024/08/17 01:49

ARGB32 はバイト単位で B G R A B G R A ... の順番で色情報が格納されています( 値はそれぞれ unsigned char 型 ) ARGBF32 ではバイト単位で R R R R G G G G B B B B A A A A R R R R G G G G B B B B A A A A の順番で色情報が格納されています( 値はそれぞれ float 型 ) ARGBF32 は格納されている色の順番と関数名が一致していなくてすみません… m(_ _;m
メンテ
Re: ARGB32 Premultipliedの画像データを描画可能形式にする手法 ( No.2 )
名前:猫の湯飲み 日時:2024/08/17 23:23

無事、ARGB32 Premultipliedの画像データを描画することが出来ました。ありがとうございました。 重ね重ねのご質問になってしまってすみませんが、あと2つほど質問があります。 1) CreateARGBF32ColorBaseImageで作成したBaseImageはReleaseBaseImageで削除しなければならないのでしょうか? ReleaseBaseImageで削除をした場合、アクセス違反を起こし、 削除をしない場合、 2693:Alloc memory dump 2693: size: 1440160( 1406.406kb) user size: 1440000( 1406.250kb) time:44471 file:e\DxBaseImage.cpp とメモリーリークを起こします。 2) BaseImageから CreateGraphFromBaseImageを使用して作成したグラフィックハンドルはアンチエイリアスには対応していないのでしょうか? SetCreateDrawValidGraphMultiSampleなどを設定した場合でもジャギーが発生してしまいます。 お忙しいところ恐れ入りますがよろしくお願いいたします
メンテ
Re: ARGB32 Premultipliedの画像データを描画可能形式にする手法 ( No.3 )
名前:管理人 日時:2024/08/19 01:19

> 1) > CreateARGBF32ColorBaseImageで作成したBaseImageはReleaseBaseImageで削除しなければならないのでしょうか? はい、ReleaseBaseImage で削除する必要があります ( 削除しないとメモリリークします ) > ReleaseBaseImageで削除をした場合、アクセス違反を起こし、 画像データを参照したり書き込まれたりされていると思いますが、そのコードをコメントアウトしても アクセス違反が発生しますでしょうか? もし書き込みのコードを有効にした場合のみアクセス違反が発生する場合は、猫の湯飲みさんが書かれた コードのどこかで BaseImage の情報を壊してしまっていて、ReleaseBaseImage の中で壊された情報を 元に解放処理を行おうとしてアクセス違反が発生しているのだと思います > 2) > BaseImageから CreateGraphFromBaseImageを使用して作成したグラフィックハンドルはアンチエイリアスには対応していないのでしょうか? > SetCreateDrawValidGraphMultiSampleなどを設定した場合でもジャギーが発生してしまいます。 SetCreateDrawValidGraphMultiSample( TRUE ); を実行して有効になるアンチエイリアスは 『描画対象にできるグラフィックハンドルに対して3Dポリゴンの描画を行った場合』なので、 CreateGraphFromBaseImage の前に SetDrawValidGraphCreateFlag( TRUE ); を実行して 『CreateGraphFromBaseImage で作成できるグラフィックハンドルを描画対象にできるようにする』ことで CreateGraphFromBaseImage で作成したグラフィックハンドルに対して3Dポリゴンの描画を行った際に ポリゴンのジャギーを消すアンチエイリアス効果が有効になります
メンテ
Re: ARGB32 Premultipliedの画像データを描画可能形式にする手法 ( No.4 )
名前:猫の湯飲み (解決済) 日時:2024/08/27 21:51

返信が大変遅れてしまい申し訳ありません。 CreateARGBF32ColorBaseImageで確保されたメモリを別のメモリで書き換えてしまってため、アクセス違反が発生していました。 void* に素直に書き込んだところアクセス違反も無く正しく描画出来ました。 お忙しい中、質問に答えていただき、ありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存