質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • Android

    7294questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • iOS

    4689questions

    iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

  • C

    4527questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • C++

    4428questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • OpenGL ES

    34questions

    携帯電話のような組込み機器のためにデザインされたOpenGLのサブセットです。

[OpenGL]グレースケールイメージをアルファマスクとして使用できますか?

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,530

SNMAGN

score 6

前提・実現したいこと

OpenGLを使用して背景を透過して画像を画面に表示することを目指しています。
テクスチャを使用して、画面に板状のポリゴンを描画し、画像を表示するところまでは出来ています。
実装上の事情があり、アルファを含んだPNG画像等を使用することが出来ません。
その代わりにアルファ値を表現するグレースケールの画像を使用出来るのですが、この画像を利用して
RGBの値をアルファ値として持つテクスチャを作成できないでしょうか。

最終的には、画像テクスチャとアルファテクスチャの二つを以下のようにブレンディングすることで、
背景を透過した表示(例えばキャラクタの切り抜き等)を実現したいと考えています。

glBlendFuncSeparate(GL_ONE, GL_ZERO, GL_ZERO, GL_ONE);
sを画像テクスチャ、dをアルファテクスチャとする。
(sR * 1, sG * 1, sB * 1, sA * 0) + (sR * 0, sG * 0, sB * 0, sA * 1) = (sR, sG, sB, dA)

知りたいこと

グレースケール画像から、各画素のR値(またはB、Gでも良い)が各画素のアルファ値になるようなテクスチャを
作成する方法についてご存じの方がいらっしゃいましたらご教授下さい。
宜しくお願い致します。

補足情報(言語/FW/ツール等のバージョンなど)

他のライブラリの兼ね合いによりOpenGLES1.1Extまでの内容で実装したいと考えています。
よって、シェーダプログラムは利用できません。
また、更新が頻繁に起こるので、配列でのアクセスは極力避けたいと考えています。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • masaya_ohashi

    2016/06/30 09:14

    すでにRGBテクスチャとして出来上がっているものをアルファテクスチャとして使いたい、ということなのですね…うーん…GLES2.0なら楽勝なんですがね…

    キャンセル

  • SNMAGN

    2016/06/30 09:33

    masaya_ohashiさん
    返信有難うございます。
    やはりOpenGL ES1.1Extまでの内容だと厳しいですか...
    時間はかかってしまいますが、OpenGL ES2.0への移行を検討してみます。
    プログラマブルシェーダなら、サンプラからの取得を工夫すれば、今回の内容は実装可能だと思いますので。
    表題の内容とは異なりますが、OpenGL2.0環境下で実行できるAndroid/iOSで使用可能な、OBJ形式やアニメーション可能な3Dオブジェクト形式の描画ができるライブラリ等をご存知でしたら、ご紹介いただけないでしょうか。

    キャンセル

  • masaya_ohashi

    2016/06/30 09:56

    私がOpenGLES2.0を触ったのは研究目的だったので、ライブラリ等は詳しくないのです…申し訳ありません。しかし、回答にも書いたように、SNMAGNさんと同じ考え方で実現しようとしているものを発見しました。参考にどうぞ。

    キャンセル

回答 1

checkベストアンサー

+1

ようやく同じことを探した質問を見つけました。あなたのやろうとしている、フレームバッファ内で合成する方法のようです。
http://gamedev.stackexchange.com/questions/75589/is-there-a-way-to-use-the-rgb-channels-of-a-texture-as-the-alpha-channel-when-ap

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/30 10:50

    ご回答有難うございます。
    今後はリンク先の内容を確認して、実験してみます。ダメならOpenGLES2.0での実装を改めて検討してみます。
    長くお付き合いいただきまして、助かりました。重ねて御礼申し上げます。

    キャンセル

同じタグがついた質問を見る

  • Android

    7294questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • iOS

    4689questions

    iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

  • C

    4527questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

  • C++

    4428questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • OpenGL ES

    34questions

    携帯電話のような組込み機器のためにデザインされたOpenGLのサブセットです。