C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: 複数の楕円同時描画する方法


(過去ログ 125 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■74453 / inTopicNo.1)  複数の楕円同時描画する方法
  
□投稿者/ 明けまして (1回)-(2015/01/03(Sat) 22:13:11)

分類:[C/C++] 

明けましておめでとうございます。

早速ですが、複数の楕円(向きや線の太さがいろいろ)同時に画面に描画したいですが
DirectXならできそうだが、入り口が分かりません。

(一個一個逐一描画するのは遅いので、一発で同時に描画しなければなりません)

環境
Widows7
VC++

C#は使わないです。

ご存じの方ぜひお願い致します。

引用返信 編集キー/
■74454 / inTopicNo.2)  Re[1]: 複数の楕円同時描画する方法
□投稿者/ Azulean (395回)-(2015/01/03(Sat) 23:11:21)
2015/01/03(Sat) 23:12:44 編集(投稿者)

No74453 (明けまして さん) に返信
> 早速ですが、複数の楕円(向きや線の太さがいろいろ)同時に画面に描画したいですが
> DirectXならできそうだが、入り口が分かりません。
(略)
> 環境
> Widows7
> VC++
> C#は使わないです。

まず、楕円を描く先はどのような構成になっているのでしょうか?
MFC? Win32API で自分で CreateWindow している? あるいは、何らかの描画エンジンを用いている?

そのあたりの技術的背景や、質問者の方と同じ状態を再現するための情報(どのプロジェクトテンプレートでどのように作っているかなど)を提示していただかないと、的を射た助言を得づらいでしょう。


> (一個一個逐一描画するのは遅いので、一発で同時に描画しなければなりません)

「遅い」というのは実感されていることでしょうか?
たとえば、どのようなコードを書いて遅いと感じていますか?
また、「遅い」とは「描画完了までの時間が長い」のか、「1個ずつ描いている状態が見えること」なのか、「一瞬背景色になって円が描かれるといったちらつきが目立つこと」なのか、どういった意味で「遅い」と表現されていますか?

あとは、どのくらいの数を描くのか、数値面でも情報を共有していただいた方が良いでしょう。
(〇個の描画に△△msかかるのを、××msまで縮めたいみたいなもの)
引用返信 編集キー/
■74455 / inTopicNo.3)  Re[2]: 複数の楕円同時描画する方法
□投稿者/ 明けまして (2回)-(2015/01/04(Sun) 10:17:56)
お返答ありがとうございます。

一個ずつ描画するのは当然遅いと思います。
これは常識なような感覚で、異なる方法で一一速度を図ることはありません。
まぁ、大分前で他人のライブラリを使ったり、自分でアセンブラで組んだりして
線の描画をやった経験はありますけど、近年やっておりません。

ただ、最近DirectXを読んで、一発で複数のポリゴンなんかを描画することができるような印象を受けていますけど、
入口のところで彷徨っています。
なじみない用語や曲がりくねったやり方に訳が分からなくなります。

どうぞ宜しくお願い致します。
引用返信 編集キー/
■74456 / inTopicNo.4)  Re[3]: 複数の楕円同時描画する方法
□投稿者/ Azulean (396回)-(2015/01/04(Sun) 15:54:18)
2015/01/04(Sun) 15:55:59 編集(投稿者)

No74455 (明けまして さん) に返信
> 一個ずつ描画するのは当然遅いと思います。
> これは常識なような感覚で、異なる方法で一一速度を図ることはありません。

この手の速度的な話は、目標を設けてから考えるべきだと思っています。
「1つずつ描くことが許容できないほど遅い」ということは、検証されたのでしょうか?

確かに他の手法に比べて、数を描けばコストはかかるかもしれません。
しかし、あなたが描きたい楕円の量が少なければ、あるいは描く頻度によっては、無視できる・許容できるレベルかもしれません。
その可能性は検討されたのでしょうか?


それとも、費用対効果(かける学習時間・開発工数に対して、得られる結果(速度改善))を度外視して、学習したいと言うことだったんでしょうか?
私の前回および今回のコメントは、費用対効果を気にして発していますので、度外視して学習したいという旨であれば、そのことを明示していただけないでしょうか。
(個人的には、楕円を複数描くレベルで DirectX を使う必要はないと考えています)
引用返信 編集キー/
■74458 / inTopicNo.5)  Re[4]: 複数の楕円同時描画する方法
□投稿者/ 明けまして (3回)-(2015/01/04(Sun) 22:49:19)
Azulean様

お返答ありがとうございます。

> 楕円を複数描くレベルで DirectX を使う必要はないと考えています.

理由を教えて下さいませんか。

引用返信 編集キー/
■74459 / inTopicNo.6)  Re[5]: 複数の楕円同時描画する方法
□投稿者/ Azulean (397回)-(2015/01/04(Sun) 23:48:15)
2015/01/05(Mon) 00:41:36 編集(投稿者)

No74458 (明けまして さん) に返信
>>楕円を複数描くレベルで DirectX を使う必要はないと考えています.
>
> 理由を教えて下さいませんか。

経験上から、以下を予想しているため。

・学習コストや手間の方が大きく、改善効果は少ないのではないか。
・GDI, GDI+ などの一般的な手法で速度面で問題となるケースにおいて、Direct2D などが楕円の描画レベルで圧倒的なパフォーマンスを得るとは考えづらい。
(・動作環境に対する前提条件が示されていない。7 だけでよいのか、7 以上なのか、XP も含むのかなど)

予想であり、外している可能性を否定しません。
ただし、前提条件や数量的、頻度的な指標を示していない状況であれば、当たっている・外れているどちらも可能性があり、一概には言えません。


ところで、他人の話を聞きかじる、推測で語るよりは実測するのが良いと思いますが、試作していないのですか?
仕様などによって、どれが適切かどうかは変わるわけですから、1個ずつ描くやり方、オフスクリーンバッファにキャッシュするやり方をその場しのぎのコードでも良いので、試作して実用に耐えるかどうか評価するべきだと思いますよ。

私は最速の方法を採用することが最適開発だとは言えないと考えています。(過剰品質を求めることにつながる恐れがある)
なぜなら、最速の方法に不慣れな分、学習コストがかかる、開発効率が低下する、不具合発生確率が上がるということもあり、開発期間が長くなる恐れがあります。
ビジネス的には、必要以上に高速に動くことよりも、短期間で不具合の少ないそこそこのスピードの方が好まれることすらあります。


他人の経験談・考え方は参考にできるかもしれませんが、結局、あなたにとって最適な答えというのは、他者に示せる状況ではありません。
(サンプルコードが示されているわけでも、プラットフォーム・数値的な条件などが示されているわけでも、ビジネス目的・学習目的などの何を重視すべきかの基準が示されているわけでもないため)


// 主筋に対してコメントがなく、私の個人的な考えについて尋ねる理由がよくわかりません。。。
引用返信 編集キー/
■74654 / inTopicNo.7)  Re[6]: 複数の楕円同時描画する方法
□投稿者/ 明けまして (4回)-(2015/01/21(Wed) 11:11:05)

Azulean様

御礼遅くて申し訳ございません。

丁寧なご指導誠に有難う御座いました!

本質問に限らず、この分野に通用のような幾つかの指針的なものを頂きました。
確かに一つ一つ自分で試す事は技術力の育成に役立ちます。

ただ、限られた時間に無理がある上、まさに「コストかかる」ことになってしまいますね。
先人・他人の経験や知恵を借りることは上述ジレンマを克服する一つの手ではと思います。
これで社会全体のコストが下がるという技術掲示板の存在意義そのものになります。
現にAzulean様のご返答から私が短期間内に習得できない事を多く得ました。

心からお礼を申し上げます。









解決済み
引用返信 編集キー/
■74666 / inTopicNo.8)  Re[7]: 複数の楕円同時描画する方法
□投稿者/ 通りすがり (10回)-(2015/01/21(Wed) 22:57:07)
No74654 (明けまして さん) に返信
>
> ただ、限られた時間に無理がある上、まさに「コストかかる」ことになってしまいますね。
> 先人・他人の経験や知恵を借りることは上述ジレンマを克服する一つの手ではと思います。
> これで社会全体のコストが下がるという技術掲示板の存在意義そのものになります。
> 現にAzulean様のご返答から私が短期間内に習得できない事を多く得ました。

最初の質問に対する自身の結論も書かずに
技術系掲示板の存在意義について語らないでください。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -