はじめて質問します。

DirectX8で、立方体くらいは描画できるようになりましたが、
テキストの表示方法がわかりません。誰か簡単なテキストの表
示方法を教えてください。

A 回答 (2件)

ちょっと大きいですけど DirectXのSDKというのがあります。

DirectXのサイトからダウンロード可能です。
インストールするとスゲー量のサンプルが出てくるようです。ざっと数えても100個近く。
3D Textってのもありますので、多分これがお望みのものだと思われます。
    • good
    • 0
この回答へのお礼

ありがとうございました。SDKはすでにダウンロードしてありますが、3DText
のサンプルがあるのは知りませんでした。

お礼日時:2001/04/12 10:54

ちょっと、うろ覚えの知識なんですが、


1.DirectDrawのsurfaceオブジェクトからデバイスコンテキストハンドルを取得し
2.WinAPIの関数を使って描画
で出来たと思います。
詳しい関数名とか忘れちゃったんですが、この方法で「普通」の文字が表示できると思いますよ。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2001/04/13 00:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QDirectX9.0での四角形の描画について

現在、WindowsXP, VS2005, DirectX9.0, C/C++の環境で
4角形を表示するプログラムを作ろうとしています。
しかし、3Dモデルの表示などは資料も多くあり、比較的
容易に学ぶことが出来たものの、4角形や3角形、円など
基本図形の描画については手持ちの書籍にはほとんど
書かれておらず、私が探せたサイトではVBやDirectX8.0
などの情報ばかりヒットしてしまい、少し困ってしまっています。

確かDirectX8.0と9.0では手順が違うと聞いたことがあったので、
もしよろしければ参考になりそうなサイトや書籍やソースコードを
ご教授頂けると幸いです。

Aベストアンサー

基本的にDirectX9以降は2Dの表示も3Dの機能を使って表示します。
2D画像の表示も3Dオブジェクトを表示するのと同じように頂点座標を指定します。

ところでDirectX9SDKのサンプルの中に三角形を描画するものはあります。
インストールした場所\Samples\C++\Direct3D\Tutorials\Tut02_Vertices
にあります。これをちょっと改造するだけで四角形表示は可能です。

またDirctX9ではスプライト機能もありますから、
それを使えば比較的簡単に2D表示が行えます。
「DirectX9 Sprite」で検索してみてください。
http://www13.plala.or.jp/kmaeda/directx9/sprite.htm

ここのページに円の描画方法についてもでていました。
(HDCを取得してAPIを使って描画する方法です。)
http://www13.plala.or.jp/kmaeda/directx9/backbuf.htm

QDIRECTXのスプライト描画で質問です

いつもお世話になってます。
DIRECTX9.0、VC++6.0を使っています。
DIRECTXでLPDIRECT3DTEXTURE9(テクスチャ)とLPD3DXSPRITE(スプライト)を使って描画しています。
ですが、テクスチャの縦と横のサイズが256*256を超えたものが正常に表示できません。
色々調べてみると、縦と横のピクセル数が2の乗数以外の中途半端なサイズのテクスチャは、キリの良いサイズに変換されるみたいですが、一応縦横共に2の乗数のテクスチャなのにうまく表示できません。
例:768*512ピクセルのTGA形式のファイル

大きな画像ファイルを表示する方法はないでしょうか?
どうぞ宜しくお願いします。

Aベストアンサー

古いグラフィックカードだと最大テクスチャサイズが256*256なんてのもあります。
IDirect3D9::GetDeviceCapsで取得できるD3DCAPS9構造体の中に
最大テクスチャサイズが入っています。

またVRAMは足りているでしょうか?
CreateTexture等が成功しているかどうかもチェックしてみてください。
512*512でアルファ付きのフルカラーだと
それだけで1MほどのVRAMを消費します。

QDirectX:描画されません・・・ヒント下さい・・・

VCでC++を使ってDirectXを使ったプログラムを書いてます。
そういう仕事しているわけではなく、素人です。

DirectXは色々とややこしくて、何がなんだかさっぱりです。
とりあえず、Win32APIを使って、ウィンドウを表示し、DirectXを使って、ボタンを押すことで、ウィンドウモードとフルスクリーンモードを切り替えることの出来るプログラムは作れました。
しかし、3Dのモデルが表示されません。
何が駄目なのかが、さっぱりです。
こういう場合、何に原因があることが多いのでしょうか??
DirectX経験者の方、どうか、教えてください。お願いします。

以下に現在の状況を列挙します。
足りなければ、ご指摘ください。
ソースは見せることはできるのですが、かなり、スパゲティーなので・・・・。

DirectX:November 2008
目標:Xファイルからじゃなく座標を自分で指定して立方体を描画したい
出来ていると思われること
・Win32APIを使ったウィンドウの作成
・Direct3Dオブジェクトの作成Direct3DCreate9⇒
 D3DDeviceオブジェクトのプレゼンテーションパラメータの設定
・カメラとライトの設定
・あと、DirectXのメソッドで背景色だけは変えられます。

経験者の方がた、よろしくお願いします!!

VCでC++を使ってDirectXを使ったプログラムを書いてます。
そういう仕事しているわけではなく、素人です。

DirectXは色々とややこしくて、何がなんだかさっぱりです。
とりあえず、Win32APIを使って、ウィンドウを表示し、DirectXを使って、ボタンを押すことで、ウィンドウモードとフルスクリーンモードを切り替えることの出来るプログラムは作れました。
しかし、3Dのモデルが表示されません。
何が駄目なのかが、さっぱりです。
こういう場合、何に原因があることが多いのでしょうか??
DirectX経験者...続きを読む

Aベストアンサー

>DirectX:November 2008
同じNovember 2008でもDirectX9系と10系があります。
まずどちらを利用しているか書いた方が良いでしょう。

>しかし、3Dのモデルが表示されません。
上記の情報だけでは推測の域を出ませんが
例えば
・ポリゴンの向きが逆周りになっている
・カメラの視界内にそのオブジェクトが無い
・インデックスバッファを使っているならインデックスの順がおかしい
等が考えられます。

まずは複雑なオブジェクトではなく
TRIANGLELISTで3角形が表示できるかどうかをチェックしてみてください。

DirectX9なら
SampleにあるTutorialが参考になるでしょう。
例えば
C:\Program Files\Microsoft DirectX SDK (November 2008)\Samples\C++\Direct3D\Tutorials\Tut03_Matrices
にあるプログラムは三角形が回転する単純なものです。
DirectX10の場合でも
C:\Program Files\Microsoft DirectX SDK (November 2008)\Samples\C++\Direct3D10\Tutorials以下に
同じようなサンプルプログラムがあります。

上記のサンプルプログラムをベースに自分のコードを少しずつマージ(融合)していくという手もあります。

>DirectX:November 2008
同じNovember 2008でもDirectX9系と10系があります。
まずどちらを利用しているか書いた方が良いでしょう。

>しかし、3Dのモデルが表示されません。
上記の情報だけでは推測の域を出ませんが
例えば
・ポリゴンの向きが逆周りになっている
・カメラの視界内にそのオブジェクトが無い
・インデックスバッファを使っているならインデックスの順がおかしい
等が考えられます。

まずは複雑なオブジェクトではなく
TRIANGLELISTで3角形が表示できるかどうかをチェックしてみて...続きを読む

QDirectX、DrawPrimitive、D3DPT_POINTLISTで描画される点の大きさを変えたい

こんにちは。
現在DirectXにてプログラムを書いていて

Device->DrawPrimitive( D3DPT_POINTLIST, 10, 0 );
で描画される点のサイズを変えたいのですがそのようなメソッドはどのメソッドになるのでしょうか?
OpenGLでいうglPointSize( size );と同じような動作をするメソッドを探しているのですが見つかりません。

よろしくお願いします。

Aベストアンサー

 こんばんは。

 試した訳ではありませんが、

 pDevice9->SetRenderState(D3DRS_POINTSIZE, *((DWORD*)&PointSize));

 では無いでしょうか。

 http://msdn.microsoft.com/ja-jp/library/cc324230.aspx
 http://msdn.microsoft.com/ja-jp/library/cc324335.aspx

QDirectXの2Dポリゴン描画について

XP SP2 VC++6.0で、DirectX9.0を、本を見ながら勉強しております。
レベルは初心です。宜しくお願い致します。

2Dポリゴンの頂点フォーマットにおいて、
struct TLVERTEX
{
float x,y,z;
float rhw;
D3DCOLOR color;
float tu,tv;
};
#define FVF_TLVERTEX(D3DFVF_XYZRHW|D3DFVF_DIFFUSE|D3DFVF_TEX1)

と記載があります。
が、define以下が何を意味しているのか分かりません。
defineの使い方もざっと調べてみたのですが、自力で解決出来ませんでした。
のちにSetFVF関数の引数としてこの変数(FVF_TLVERTEX)を使うのですが、その意味も良く分かりません。
どなたか、教えて頂けないでしょうか?

ソースを提示すれば話は早いのですが、本に書いてある内容なのでここにソースを載せていいかどうか分かりません。

以上宜しくお願い致します。

Aベストアンサー

>これらの合計は2進数
自分の回答につっこみですが、すいません合計ではなくビット論理和です。(合計とは違います)
ちなみに「|」と「&」、「^」はビット(論理)演算子と呼ばれるもので
もし理解していないのであれば、ネット等で調べて勉強してください。
※「||」や「&&」とは違う演算子です。

>SetFVF特有の書き方なのでしょうか?
SetFVF特有ではありません。
DirectX以外にも例えばWindowsAPIでもよく使われる書き方です。
WinAPIのCreateFileの場合(http://msdn.microsoft.com/ja-jp/library/cc429198.aspx)
dwAccessに指定する
0x40000000 (GENERIC_WRITE) と0x80000000 (GENERIC_READ)
も2進数で表すとbitが被らないようになっていますよね?

例えば下記のようにしてビットを判定する事ができます。

void func(unsigned int dwAccess)
{
if (dwAccess & GENERIC_WRITE)
{
//GENERIC_WRITEフラグがたっている
}
if (dwAccess & GENERIC_READ)
{
//GENERIC_READフラグがたっている
}
}

もし func( GENERIC_READ | GENERIC_WRITE );と指定すれば両方のif文を通ります。

以下のように定義しておくとお互いのビットに干渉しないように定義できます。(この場合、intが32bitなら32通り)
#define FLAG_A 0x1
#define FLAG_B 0x2
#define FLAG_C 0x4
#define FLAG_D 0x8
#define FLAG_E 0x10
#define FLAG_F 0x20
#define FLAG_G 0x40
#define FLAG_H 0x80
#define FLAG_I 0x100
#define FLAG_J 0x200
#define FLAG_K 0x400
#define FLAG_L 0x800




あとdefineって定数指定だけではありません。
例えば
#include <stdio.h>
#define MAX(A,B) ( A > B ? A : B)
int main()
{
int max = MAX(10,20);
printf("%d\n",max);
return 0;
}
のような記述も可能です。

>これらの合計は2進数
自分の回答につっこみですが、すいません合計ではなくビット論理和です。(合計とは違います)
ちなみに「|」と「&」、「^」はビット(論理)演算子と呼ばれるもので
もし理解していないのであれば、ネット等で調べて勉強してください。
※「||」や「&&」とは違う演算子です。

>SetFVF特有の書き方なのでしょうか?
SetFVF特有ではありません。
DirectX以外にも例えばWindowsAPIでもよく使われる書き方です。
WinAPIのCreateFileの場合(http://msdn.microsoft.com/ja-jp/library/cc42...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報