問題タブ [glfw]

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.

0 投票する
0 に答える
199 参照

multithreading - ウィンドウの 2 番目のレンダリング コンテキストの作成

Linuxでglfwを使用してOpenGLウィンドウを開いており、2つのスレッドでOpenGLを使用しようとしています。Web を読んで、同じウィンドウで 2 番目のレンダリング コンテキストを開く必要があることを理解しました。実際にレンダリングに使用されるスレッドは 1 つだけで、もう 1 つのスレッドは PBO を介したデータ交換に使用されます。

glxCreateContext()問題は、glfw を使用して開いたウィンドウを呼び出すために必要なパラメーターを取得するにはどうすればよいかということです。

編集:共有リストを使用して、2 つのレンダリング コンテキストの作成を終了しました。これはおそらくより良いアイデアです。

0 投票する
4 に答える
33053 参照

gcc - GCC を使用して静的ライブラリをリンクする適切な方法

一部の静的ライブラリ (lib*.a) は、共有ライブラリ (lib*.so) をリンクするのと同じ方法 (ld -l スイッチ) でリンクできるのに、そうでないものがあるのはなぜですか?

私は常に、静的かどうかに関係なく、すべてのライブラリを -l... でリンクできると教えられてきましたが、これまでに 1 つのライブラリ (GLFW) に遭遇しました。このようにリンクしてみてください。

この質問に対する回答によると、スタティック ライブラリをリンクする「適切な」方法は、-l を使用するのではなく、自分のオブジェクト ファイルと一緒にそれらを直接含めることです。そして、GLFW ライブラリの場合、これで問題は確実に解決されます。しかし、私が使用している他のすべての静的ライブラリは、-l でリンクすると問題なく動作します。

そう:

  • 直接インクルードするのではなく、リンクするとこの 1 つのライブラリが機能しない原因は何ですか? 原因がわかっていれば、ライブラリを編集して再コンパイルして問題を修正できるかもしれません。
  • 共有ライブラリをリンクするのと同じ方法で静的ライブラリをリンクすることになっていないというのは本当ですか? (もしそうでなければ、なぜですか?)
  • ライブラリがこの方法で直接インクルードされている場合、リンカは未使用のライブラリ関数を出力実行可能ファイルから削除できますか?
0 投票する
3 に答える
6726 参照

cross-platform - GLFWトグルウィンドウ-フルスクリーンモード

GLFWを使用していますが、フルスクリーンウィンドウモードを切り替える方法を知りたいです。解像度を変更するのではなく、ウィンドウを上部に装飾なしで設定します。GLFWがこれを実行できない場合、これを実現するためにどのクロスプラットフォームライブラリを提案しますか?

0 投票する
2 に答える
590 参照

c - GLFWウィンドウを開いたり閉じたりした後にコンソール入力を取得する際の問題

私はGLFWを使用してアプリケーションを開発しています。これにより、ユーザーはコンソールに情報を入力し、プログラムはその情報を処理し、openglウィンドウを開いて(GLFWを使用して)結果を表示します。その後、ユーザーはウィンドウを閉じてメインメニューに戻り、必要に応じて詳細情報を入力できます。

現在私が抱えている問題は、GLFW / OpenGLウィンドウを閉じると、コンソールがscanf()からの入力を受け入れなくなることです。GLFWを適切に閉じていることはかなり確信しているので、問題が何であるかはわかりません。

私が使用しているコードは以下のとおりです。

Main.c:

pantograph.h:

0 投票する
2 に答える
945 参照

gcc - mingw64 で GLFW の Win64 バージョンをコンパイルする

まず、glfwdll.a と glfw.dll の 64 ビット バージョンを作成する必要があります (そのため、Windows で Go glfw バインディングを動作させることに最終的に成功することができます... Linux では簡単でした!)

"maincrt entry point not found, using default 0xsomehexnumber.代わりに」またはそのようなもの。もちろん、エントリ ポイントは実行可能ファイルを参照します。この場合は、examples ディレクトリにあるものです。

実際、それらのほとんどは機能しません。しかし、すべてが構築されました。次の実行可能ファイルが機能します。

listmodes.exe mtbench.exe mthello.exe およびparticle.exe - 後者は私にとって唯一のグラフィカル(3d gfx)の例です(前者はコンソールウィンドウにいくつかのテスト情報を出力するだけです)。

さて、他の問題は何ですか?それらはクラッシュせず、コンソールに何も報告しません...私がそれらを実行すると、すぐに、静かに戻ります。

私のGLFWビルドは壊れていますか? 直し方?動作する 4 つの例と動作しない他の例の大きな違いは何ですか?

これはかなり新しいバニラ Win7 64 ビット インストールです。クラップウェアはなく、すべてが最新で、UAC とテーマはオフで、多くのソフトウェアはまったくインストールされておらず、Nvidia GPU ドライバーが更新されています (GPU Caps Viewer などは正常に動作するため、OpenGL が存在します)。

0 投票する
3 に答える
4873 参照

gcc - Windows cgo->gcc->ld を介した DLL リンクで、「undefined-reference-to-(function)」エラーが発生する

(非常に詳細な問題レポート -- tl;dr は一番下にあります!)

私は Glut よりも GLFW を本当に好み、そのGolang バインディングを Windows 64 ビットで Go 1.0.1 64 ビットで動作させたいと考えています。Linux では、バインディングは問題なく動作します。これは原則として Windows で実行可能です -- GitHub ユーザー chscはなんとか実行できましたが、彼は Win32 を使用しており、彼のヒントはまだ私の問題を解決していません。ただし、tdm64-gcc-4.6.1 に基づいて、完全でクリーンな Mingw64 をセットアップしています。

ここで奇妙なことに、freeglut バインディングを 64 ビット Windows で動作させると、64 ビット Go 1.0.1が動作します。glfw バインディングが失敗します。基本的に両方とも同じcgo機能とテクニックを使用しているため、理由を理解したいと思います。

注: 現在、自作の中途半端ではあるが基本的に動作する代替パッケージを用意しています。これは、LoadLibrary/GetProcAddress 呼び出しを使用して Go で glfw.dll を公開します。これは機能しますが、無数の Syscall()、Syscall6()、Syscall9()、Syscall12() などの Go func 呼び出しよりも、ハードリンクされたコンパイル済みの CGO バインディングの方が望ましいと思います。Win32 と Linux の gopher がこれを使用できるのであれば、なぜ私たち Win64 の人々はそうしないのでしょうか?

これまでの私のセットアップは次のとおりです。

  1. cgoを適用してlibリンクを機能させるための3つのパッチを備えたGolangビルドがあります
  2. MinGW64 を使用して、最新の freeglut および GLFW ライブラリを 64 ビット DLL としてコンパイルすることに成功しました。
  3. ヘッダー ファイル glut.h、freeglut*.h、および glfw.h は、\MinGW64\x86_64-w64-mingw32\include\GL に配置されます (gl.h、glaux.h、glu.h の隣)。
  4. lib ファイル libfreeglut.a および libglfwdll.a は、\MinGW64\x86_64-w64-mingw32\lib に配置されます (libglu32.a、libopengl32.a の隣)。
  5. 64 ビット DLL glfw.dll および freeglut64.dll は、\windows および \windows\system32 (opengl32.dll、glu32.dll の隣) に配置されます。
  6. freeglut64.dll と glfw.dllはどちらも動作すると思います。少なくとも、サンプル プログラムのほとんどは、DLL をインストールした後に動作します。

すべてが整っているはずですよね?まず、バインドの成功 (これは必要ありません) である freeglut -- -x github.com/zombiezen/Go-GLUT/glut を取得すると、すべてが正常にビルドされ、glut ウィンドウを正常に作成できます。 .go ソース ファイルからコンパイルされた Windows test.exe で三角形を表示します。-x のおかげで、go get が何をビルドするかを表示します:

この点に到達するには、次のように glut.go をわずかに変更する必要がありました。

要約すると、これは問題なくビルドでき、Go からインポートしてリンクし、コードで使用できます。

さてGLFWです。GO ファイルは、glut.go と非常によく似ています。

#define GLFW_DLL は、静的リンクが発生しないようにするためのものです。ただし、 go get -x github.com/jteeuwen/glfwの出力は次のとおりです。

はい、それは一口です-しかし、基本的に常に同じエラーであり、ビルド手順のかなり遅い段階です。#define GLFW_DLL が定義されていない場合、__imp_ プレフィックスがないことを除いて、本質的に同じ出力が得られることに注意してください。また、静的リンクは Go では奨励されておらず、この特定のユースケースでは望ましいものでもありません。

さて、gccが「未定義の参照」について不平を言うとき、私がグーグルで調べたところ、さまざまな理由が考えられます...

  • DLL を見つけるのに失敗することはありません。DLL は適切な場所にあり、freeglut64.dll では機能します。
  • .a ライブラリを見つけるのに失敗することはありません-それらは適切な場所にあり、libfreeglut.a は機能します.-lglfwdll を -lblafoobar に変更すると、gcc ははるかに早く失敗し、正しく「blafoobar が見つかりません」と不平を言います-そのため、libglfwdll.aが見つかります。
  • lib依存関係の順序? -lglfwdll を最初の lib (-lglu32 -lopengl32 の前) として、最後 (これら 2 つの後) として試しましたが、違いはありませんでした。
  • Golang glfw バインディングに問題がありますか? そうは思わないでください、chsc用のWindows(32ビットですが)を含む他の人でも機能します

TL;DR -- Windows 64 ビット、Go 1.0.1 64 ビットに完全にパッチが適用されている場合、CGOはfreeglut と glfwの両方で GCC にフィードするものを正常に生成します。次に、GCC は喜んでそれらを食べて freeglut バインディングを構築しますが、glfw バインディングを構築するためにそれを拒否し、すべての C.funcs() に対して「未定義の参照」を使用します。libfreeglut と libglfwdll の両方が正しくビルドされ、64 ビット DLL としてインストールされ、.h/.a ライブラリが正しく配置されます。原因は何ですか?

0 投票する
3 に答える
1911 参照

gcc - MinGW64gccを使用したGLFWの構築-エントリシンボルの警告とリンカーエラー

これは、最新のMinGW64を使用したかなり新しいバニラWin7 64ビットインストールで、 make win32-msysコマンドを呼び出すクリーンな(新しく抽出された)GLFW2.7.5ソースディレクトリにあります。

[A]ライブラリの構築

#1--gcc-c-Iでの警告。-I .. -Wall -mwin32 -O2 -o win32_init.o win32_init.c:

#2--gcc-c-Iでの警告。-I .. -Wall -mwin32 -O2 -mdll -DGLFW_BUILD_DLL -D_GLFW_NO_DLOAD_GDI32 -D_GLFW_NO_DLOAD_WINMM -o win32_init_dll.o win32_init.c:

ただし、関連する出力ファイル。\ lib \ win32:glfw.dll、libglfwdll.a、およびlibglfw.aに作成されます。ただし、後でgccを介してリンクすることは不可能であるため、これらが破損している可能性があるのではないかと心配しています。この投稿の最後の問題と同じ問題です。

[B]例の作成

#3-triangle.exe、pong3d.exe、splitview.exe、mipmaps.exe、gears.exe、boing.exe、wave.exe、heightmap.exeでの警告:

ただし、正常にビルドされるlistmodes.exe、mthello.exe、mtbench.exe、およびparticles.exeについてはそうではありません。実際、これらの4つだけがその後ここで適切に実行され、他の4つは出力やエラーなしですぐに終了します(当然、それらの有効なエントリポイントがないため)。

[C]テストの構築

  1. 精度.exe、dynamic.exeでの警告:

    /li>

defaults.exeではそのような問題はありません。dynamic.exeの場合、次のエラーが発生します。

後者は、DLLをロードするためのテストプログラムです。必要なライブラリ(.aと.dll)が正しい場所にないだけだと思う​​かもしれませんが、この時点で、必要なインクルードとライブラリがすべて揃っていることに注意してください(以前のGLFW製のものとまったく同じでした)上記、同じバージョン、同じ警告、同じ出力ファイル)を正しい場所に:

  • \ MinGW64 \ x86_64-w64-mingw32 \ libのlibglfwdll.a(libglu32.a、libopengl32.aの隣)
  • \ MinGW64 \ x86_64-w64-mingw32 \ include \ GLのglfw.h(gl.h、glaux.h、glu.hの隣)
  • \windowsおよび\windows\ system32のglfw.dll(opengl32.dll、glu32.dllの隣)
0 投票する
1 に答える
1424 参照

opengl - glfwLoadTexture2D がテクスチャをロードせず、代わりに黄色で塗りつぶされたクワッドを表示する

glfwLoadTexture2D を使用していくつかの tga ファイルをプログラムにロードするためにテクスチャをロードしようとしていますが、クワッドにテクスチャが表示される代わりに黄色で塗りつぶされます

通ります

内部レンダリングと

これは私がテクスチャをロードする方法です

glGetError のヒントをありがとう、それは本当に原因を絞り込むのに役立ちました. しかし、画像を取得しようとする方法に問題がある場合は教えていただけますか? フォルダー Textures は私のプロジェクト dir 内にあり、すべてのスペルが正しいことを確認しました。

0 投票する
1 に答える
894 参照

haskell - GLFW ウィンドウを閉じる

X11 および xfce4 を使用して x86_64 Arch Linux を実行しており、OpenGL および GLFW-b ライブラリを使用して単純な OpenGL/GLFW アプリケーションをコンパイルしようとしています。ただし、ウィンドウを閉じるのに問題があります-Ctrl-Cでしかウィンドウを強制終了できません。

http://pastebin.com/i7Zshfk1のコード

ありがとう!

0 投票する
2 に答える
1058 参照

c++ - ウィンドウ タイトルの FPS カウンター GLFW

フレーム/秒の読み取り値をウィンドウ タイトルに表示しようとしています。以前に一度やったことがありますが、それを行うためのコードをどのように設定すればよいでしょうか? float から const char * に切り替える必要があります。