問題タブ [derelict3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
d - 遺棄とGFW3
Derelict3 を Ubuntu 12.10 で GLFW3 と連携させようとしています。
DMD 2.061 を使用して Derelict3 と glfw3 を正常にビルドしました。インポートとリンクは機能します。
しかし、この記事が書かれてからglfwOpenWindowHint
APIが変更されたようです.
- Derelict3 (
git://github.com/aldacron/Derelict3.git
) も - GLFW3 (
git://github.com/elmindreda/glfw.git
)
また、GLFW3 の使用に関する他のチュートリアルは見つかりません。
CまたはDでGLFW3を使用する方法に関する最新のチュートリアルを持っている人はいますか?
更新: glfw3 のサンプル ディレクトリは良いスタートだと思いますよね?
opengl - 拡張機能をロードするための偽の OpenGL コンテキストを作成する
thisに従って D で OpenGL を使用するために Derelict3&glfw で遊んでいます。拡張機能を使用する場合は、最初にコンテキストを作成する必要があります。これは、glfw でウィンドウを作成し、それを現在のコンテキストとして設定することによって行われます。コンテキストを作成して設定したら、DerelictGL3.reload()
すべての拡張機能をロードするために使用する必要があります。
ここで、ウィンドウを作成する前にすべての準備を行いたいと思います。これらの準備の 1 つは、すべてのシェーダー プログラムをロードしてコンパイルすることです。Derelict3GL.reload()
しかし、これには、コンテキストなしで実行することを拒否するシェーダー拡張機能が必要でした...
だから、私はこのハックハックを使用しました:
これで動作します。シェーダー プログラムをロードしてコンパイルし、実際のウィンドウを開くことができるようになりました。しかし、これは私には少しハックすぎるようです。コンテキストを偽造する、またはコンテキストなしで拡張機能をロードする適切な方法はありますか?
linux - SDL ウィンドウが OS によって不適切に「無応答」とマークされているように見える
Derelict 3 経由でアクセスする SDL2 ウィンドウ ウィンドウがあります。
それは白黒でストロボすることになっています (私がてんかんが嫌いだからではありません)。ただし、一定の時間が経過すると、Ubuntu 13.10 はウィンドウを「応答なし」としてマークし、グレー表示し、ストロボ効果を鈍らせます。
これは非常に刺激的であり、EEG ヘッドセットから SSVEP 測定値を取得するためにアプリケーションが必要とする視覚刺激の効果を完全に無効にします。
ウィンドウが本来あるべきことを正確に実行していることを OS に認識させるにはどうすればよいですか?
コード
SDL 呼び出しを実際のコードにラップしたので、疑似コードとそれらのセクションで呼び出される SDL メソッドを提供します (他の SDL 関数を呼び出していないことを確認しました)。
ラッパー ライブラリ内のすべての SDL 呼び出しのエラー コードと戻り値を慎重にチェックします。彼らはすべて元気です。私が知る必要があるのは、OS にハートビートを提供するために何を追加しなければならないかということです。これにより、ウィンドウがグレー表示されなくなります。
別物...
誰かSDL2タグを追加してくれませんか? SDL2 には、SDL1.2 とは非常に異なる API があります...
sdl - opEquals への未定義の参照: SDL2 への Derelict3 バインディングでのリンカー エラー
SDL2 の Derelict3 バインディングを使用して、単純な Hello World を作成しようとしています。リンク中に、これまでに見たことのないエラーが発生します。
コマンドライン:
dmd src/main.d -debug -Iinclude -Isrc -L-Llib -L-lSDL2
出力:
私が試したこと:
- Derelict3 と SDL2 が最新であることを確認する
- リンクされたライブラリの順序を変更する
- オンラインで検索すると、これに関連する他の投稿が 1 つしか見つかりませんでした: http://dblog.aldacron.net/forum/index.php?topic=834.0
DMD64 D コンパイラ v2.063.2 を使用しています。どんな助けでも大歓迎です。ありがとう。
d - Derelict の DUB で依存関係を自動的にコピーする
Derelict アプリケーションを作成していますが、Derelict では共有ライブラリがルート パスにある必要があるようです。./bin
ファイルを手動でフォルダーにコピーせずに、DUB を使用してこれを行う方法はありますか? (自動ビルド時にコピーするだけです)
また、Linux システムの .so ファイルもバイナリ フォルダーにある必要があると想定しています。あることは知ってい"copyFiles"
ますが、ファイルはどこからコピーされ、どこにコピーされますか? これはクロスプラットフォームですか?
opengl - DerelictGL.reload() の Derelict3 SDL2 と OpenGL の奇妙な SIGSEGV
D で SDL と OpenGL を設定しようとしています。具体的には、SDL2 と OpenGL 3.3 コア/前方互換性があります。(ただし、最後の 2 つを例では省略しましたが、それらが存在するかどうかに関係なく同じポイントで中断するためです)。GLFW の以下に相当するものは問題なく動作するので、どうやら私は SDL 側で何かを台無しにしているか、または SDL が Derelict を壊す魔法のようなことを行っているようです。いくつかの関数ポインタをロードする以外は、どこかで何かがうまくいかず、Derelict または SDL のバグを除外しませんが、それは私のコードである可能性が高いです。
私はそれを見ませんが、ここにあります:
質問のタイトルにあるように、DerelictGL.reload() (GLEW に似た OpenGL 関数をロードすることになっています) で壊れます。これがスタックトレースです...
ここでのエラーは、glGetString(GL_EXTENSIONS) が null を返すために発生しているようです。どうせよく分からん。DerelictGL.reload の呼び出しを削除すると、残りのプログラムが実行されますが、それは OpenGL1.1 以降の関数が読み込まれないことを意味します。
これを実際の質問として表現するには、何か間違っていますか? もしそうなら、何?
追加
OpenGL 3.3 コンテキストが作成されたことを確認しました - glGet は GL_MAJOR_VERSION と GL_MINOR_VERSION でそれぞれ 3 を返します。
sdl - デストラクタで SDL_GL_DeleteContext を実行できません
D で SDL-OpenGL アプリケーションを作成しています。これを実現するために Derelict SDL バインディングを使用しています。
アプリケーションの実行が終了したら、SDL をアンロードします。これを行うには、次の関数を実行します。
ただし、何らかの理由で、あいまいなセグメンテーション違反 (GDB にトレースがない) が発生し、-11 が返されます。デストラクタで SDL を破棄できませんか?使用後に SDL を破棄する必要さえありますか?
私のコンストラクタ:
d - dmd と gdc のコンパイル コードの違いは?
現在、 DerelictSDL2 (D の SDL2 ライブラリへのバインディング) を試しており、JPG 画像を正常に読み込んでウィンドウに表示するコードを作成しました。つまり、dmd でコンパイルした場合です。gdc (およびコード変更なし) を試してみると、コンパイルはできますが、実行時にイメージが読み込まれません。
私は正しいことをしたと信じています:
SDL_Init(SDL_INIT_VIDEO)
それから
IMG_Init(IMG_INIT_JPG)
そしてその後のどこか
this.data = IMG_LoadTexture(Window.renderer, name.ptr)
ここWindow.renderer
で (明らかに)SDL_Renderer*
とname.ptr
は、char*
ロードするイメージの名前を指しています。しかし、gdc でコンパイルするとIMG_Load
、IMG_LoadTexture
どちらも を返しnull
ますが、dmd では、新しく作成されたテクスチャへのポインタを返します...
私は何か他のことを忘れましたか(結局のところ、dmdを使用すると、なくても機能しましたIMG_Init
)?Derelict は dmd でしか動作しませんか (C 関数とのみインターフェイスしている場合でも)?
dmd: 2.065
gdc: 4.9.1
編集 :
問題がまったく異なることがわかりました。IMG_LoadTexture
2 番目の引数にデータへのポインターを使用しますがname.ptr
、dmd でのみ機能するようです。ただし、次のようなハードコードされた引数を試してみると:
IMG_LoadTexture(renderer, "../test/res/image.jpg")
dmd と gdc の両方で動作します。