2012-06-13 14 views
5

私はゲームのためにこのプログラムを作っており、それをもう少し自動化する助けが必要です。C++画像操作

プログラムは画像を取り込んで表示します。私はOpenGLのテクスチャでこれをやっています。ゲームのスクリーンショットを撮るときは、通常は約700x400です。私はプログラムに高さと幅を入力し、空白スペースを追加することで画像を1024x1024にサイズ変更します(より良い互換性のためにはPOTテクスチャにします)(元の画像は左上隅にあり、残りは空白です;誰かがこの用語を知っていますか?)それを私のプログラムにロードし、コーナーを調整して(0,0)から(700,400)の部分だけが表示されるようにします。

これはイメージの表示方法です。さて、これを自動化したいと思います。だから私は700x400の画像を取って、画像の幅と高さ(700x400)を取得するプログラムに渡し、空白スペースを追加して1024x1024にサイズ変更してからロードします。

誰もがこれを行うことができるC++ライブラリを知っていますか?私はまだ手動でスクリーンショットを撮っています。

私は画像(.bmp)を読み込んでテクスチャに変換するためにSimple OpenGL Image Library(SOIL)を使用しています。

ありがとうございます!

答えて

1

イメージを正しく表示するために空白スペースを追加することによって、実際にサイズを変更する必要はありません。実際には、それを行うことは実際には不十分な方法です。特に、画像を.bmp形式で保存するためです。

SOILは、テクスチャをロードするときに空白を自動的に追加できます。何も操作せずにファイルをそのままロードしようとします。土壌ドキュメントから

が自動的に(GUI要素またはスプラッシュ画面 ためた矩形テクスチャをロードすることができ

次に大きな2のべき乗の サイズに画像を再スケーリングできはGL_ARBが必要/ EXT/NV_texture_rectangle)

とにかく、sでピクセルを表示するためにテクスチャを使用する必要はありませんクレン。私はあなたがレンダリングのためにシェーダを使用していないと推測しています - すべてが固定パイプラインを通過するなら、はるかに簡単なglDrawPixels関数があります。 SOIL通話をSOIL_load_imageに変更することを忘れないでください。

+0

"画像を自動的に次の2乗の大きさに再スケールすることができます" - 私は本当に "自動的に"という言葉を忘れていました。私はあなたが言ったことを試してみる。ありがとう! – Tuntuni

+0

サイズ変更せずに読み込もうとしましたが、ちょっと変わってしまいました。私は自分のコーナーが彼らのところにあると確信しています。画像もグレースケールに変わり、スケールするにつれて色が戻ってきます。 SOIL_load_imageとglDrawPixelsのいずれかのリンクやリンクを教えてください。ありがとう。 – Tuntuni

+0

'SOIL_FLAG_POWER_OF_TWO'または' SOIL_FLAG_TEXTURE_RECTANGLE'を試してみてください。 –