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

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

新規登録して質問してみよう
ただいま回答率
85.48%
OpenGL ES

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

3637閲覧

Unityのプラグイン側でOpenGL ESの処理を実行させる事は可能でしょうか

fumiasi

総合スコア12

OpenGL ES

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2017/05/09 15:42

編集2017/05/10 08:05

###前提・実現したいこと
Unityのプラグイン(dll側)でOpenGL ESの処理をいろいろと行いUnity側に反映したいと考えております。

方法を調べてみると
https://docs.unity3d.com/ja/540/Manual/NativePluginInterface.html
と記載されており、Unity側でテクスチャの実体を生成して内容を書き換えるような形で
サンプルや内容が記載されておりました。
(調べ方が悪いのか、検索した結果は上記を検証した内容の記事が多かったです。)

実装したい事は
dll側で

glEnable( GL_TEXTURE_2D ); glGenTextures( 1, &m_TexID ); glBindTexture( GL_TEXTURE_2D, m_TexID );

を呼び出して、dll側でテクスチャの実体を生成してUnity側で描画したり

dll側で

glClearColor(r, g, b, a); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

を使用して画面をクリアーしたり

glViewport(x, y, w, h);

を使用してビューポートを指定したりする事は可能なのでしょうか。

※実行環境はUnity5.6.0f3で、必ずOpenGL ESで動作するようにPlayer Setteingの
「Auto Graphics API」を変更しています。

また、
https://docs.unity3d.com/ja/540/ScriptReference/GL.InvalidateState.html
に記載されている

GL.InvalidateState();

を使用する必要はあるのでしょうか。
(GL.InvalidateStateの使用例とかも見つからなかったので、
リファレンスの内容では関係があるのか、どのようなタイミングで使用するのか今一つ判断がつきませんでした)

どなたか詳しい方がいれば、ご教授頂けますと幸いです。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

試行錯誤した結果、dll側で作成した内容をUnity側で描画させる事は可能だと判明しました。
実際に上記の内容を反映させるには
コルーチン等で実行し、

yield return new WaitForEndOfFrame();

まで待機してから

GL.IssuePluginEvent(RenderEventFunc(), eventID);

でdll側の処理を呼び出して、レンダーイベントでOpenGLの処理を行う必要があります。

WaitForEndOfFrame()まで待機せずに処理した場合、
dll側で作成した内容は描画されません。
(ただし、Unity側で作成したテクスチャやポリゴンを変形させる等の
実体が既に存在する物に関しては適応されるようです。)

また、GL.InvalidateState();は使用する必要はありませんでした。

投稿2017/05/13 12:57

fumiasi

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問