スキップしてメイン コンテンツに移動

UbuntuでOpenGL

Ubuntu 9.04 OpenGLアプリでも作ろうかと思い、とりあえず赤本のサンプルコードをダウンロード。
何も考えずにコンパイル!
$ gcc aaindex.c
当然エラー!
error: GL/glut.h: No such file or directory

glut.h が無いというので、Ubuntuのパッケージマネージャから glut で検索すると
freeglut3
freeglut3-dev
freeglut3-dbg
の3つのパッケージをインストールする。

再度、コンパイル!
$ gcc aaindex.c
やはりエラー
undefined reference to `glutSetColor'
・・・
リンク時にAPIが見つからないとのことなので
$ gcc -lglut aaindex.c
これでコンパイルは通過。

続いて実行してみる。
$ ./a.out
またもエラー
get fences failed: -1
param: 6, val: 0
freeglut (./a.out): ERROR: Internal error in function fgOpenWindow
X Error of failed request: BadWindow (invalid Window parameter)
Major opcode of failed request: 4 (X_DestroyWindow)
Resource id in failed request: 0x0
Serial number of failed request: 29
Current serial number in output stream: 32
このエラーメッセージで検索してみるとここが引っかかりました。
どうやらglxモジュールとOpenGLをサポートしているビデオドライバが必要らしい。
パッケージマネージャで検索するが、めぼしいものは見つからず。
さて困った。

と思ったら、こちらによるとglxgearでOpenGLが使える環境かどうかわかるというので
$ glxgear
を実行してみると、見事にギアが回っています。
なんだ、使えるじゃん!

ということは、ソースコードが悪い可能性があるので、いろいろ試してみると
glutInitDisplayMode (GLUT_SINGLE | GLUT_INDEX);
の行が問題のようでした。私の環境ではGLUT_INDEXが使えないようです。
他のサンプルは無事、動きました。

以上。

コメント

このブログの人気の投稿

iPhoneアプリを作る上でのモヤモヤを解消したい

フレームワークなんか使わなくてもガリガリコード書いちゃえばいいんだけど、なんか損してるんじゃないかと気になるのですよ。 でもフレームワークが自動的に色々やってくれてるのはありがたいのだけれど、何をやっているのか気になってモヤモヤしてしまう、というジレンマがあったりなかったり。 という訳でまずは、Xcode で Empty Application と Single View Application (Storyboard付き)で何か違うのかを調べてみた。 単純にコードの差分を比較すると以下の違いがあることがわかる。 追加されているファイル: ViewController.h ViewController.m MainStoryboard.storyboard ViewControllerはUIViewControllerからの派生で、viewDidLoadとdidReceiveMemeoryWarningだけがオーバーライドされただけのひな形。 MainStoryboard.storyboardは、ViewControllerとFirstResponder, Exit ViewControllerにはUIVIewが1つだけ配置されている。 ここまでは、ひな形が追加されているというだけなので、特にモヤモヤはなし。 次に差分のあるファイル:  app-info.plist  AppDelegate.m app.xocdeproj/project.pbxproj app.xocdeproj/project.xcworkspace/xcuserdata/cozy.xcuserdatad/UserInterfaceState.xcuserstate app.xocdeproj/xcuserdata/cozy.xcuserdatad/xcschemes/test.xcscheme  app.xocdeproj/xcuserdata/cozy.xcuserdatad/xcschemes/xcschememanagement.plist とりあえず、app.xcodeproj中身については脇に置いておこう。 app-info.plistは、以下の2行が追加されている。     <key>UIMainStoryboardFi

repo init の使い方覚書

Androidのソースコード管理ツール repo についての覚書. 使用例 repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake -u URL "URL"にはマニフェストファイルのリポジトリのURLを指定する. 通常は git://android.git.kernel.org/platform/manifest.git を指定する. -b REVISION マニフェストファイルのブランチまたはリビジョンを指定する. どんなブランチやリビジョンがあるかは、 http://android.git.kernel.org/platform/manifest.git を参照. 省略すると"master"になる. 一度作成したrepoクライアントのマニフェストファイルのブランチは repo init -b で変更できる. ただし、変わるのはマニフェストファイルのブランチのみ. ソースコードに反映させるには, repo sync が必要. -m NAME.xml 初期化時にrepoクライアントに作成されるマニフェストファイルのファイル名. 省略すると default.xml になる.

Ubuntu で emacs の Ctrl + Space で Mark set できない問題

Ubuntu 9.04 のデフォルト環境で emacs を使っているとき、 Ctrl + Space でマークをセットしようとすると SCIM(IME) が 立ち上がってマークができません。 Ctrl + @でもマークを設定できるバインディングになっているみたいですが 長年、Ctrl + Space を使ってきたので、SCIMを起動させなくする方法を調べました。 1.[System] -> [Preferences] -> [SCIM Input Method Setup]を起動。 2.左のリストから、[FrontEnd : Global Setup] を選択。 3.[Hotkeys] の [Trigger] の [...] ボタンを押して、Select the trigger keys を起動。 4."Control + space" を選択して、[Delete] ボタンを押す。 5."Control + space" が消えたら、[OK] 6.更に SCIM Input Method Setup も [OK] で閉じる。(ダイアログが出ても[OK]でOK) これで、スッキリしました。