私はopenglを使ってボードを作成しようとしています。これを行うために、私はグリッドを作成するために一連の線を描こうとしています。しかし、すべてのチュートリアルサイト(openglを含む)にはC++の例があり、Haskell wikiはそれを説明するうまくやっていません。私はOpenGLを初めて使っており、チュートリアルが好きです。ハスケルでOpenGLを使って線を描く
答えて
OpenGL 2.1以前のバージョンを使用したいとします。 OpenGL 3.0では、異なるコードが必要です。
ので、Cには、これを記述します。私は、例えば使用するので、このコードで
renderPrimitive Lines $ do
vertex $ Vertex3 1 2 3
vertex $ Vertex3 5 6 7
:
glBegin(GL_LINES);
glVertex3f(1, 2, 3);
glVertex3f(5, 6, 7);
glEnd();
あなたはこのようなHaskellので同等を書きます1
の変数ではなく、あいまいな型に関するエラーが発生する可能性があります(したがって、1
を(1 :: GLfloat)
に置き換える必要があります)。ただし、すでにタイプがGLfloat
の実際の変数を使用する場合は、
ここウィンドウ白色対角線を描く完全なプログラムは次のとおり
import Graphics.Rendering.OpenGL
import Graphics.UI.GLUT
main :: IO()
main = do
-- Initialize OpenGL via GLUT
(progname, _) <- getArgsAndInitialize
-- Create the output window
createWindow progname
-- Every time the window needs to be updated, call the display function
displayCallback $= display
-- Let GLUT handle the window events, calling the displayCallback as fast as it can
mainLoop
display :: IO()
display = do
-- Clear the screen with the default clear color (black)
clear [ ColorBuffer ]
-- Render a line from the bottom left to the top right
renderPrimitive Lines $ do
vertex $ (Vertex3 (-1) (-1) 0 :: Vertex3 GLfloat)
vertex $ (Vertex3 1 1 0 :: Vertex3 GLfloat)
-- Send all of the drawing commands to the OpenGL server
flush
デフォルトのOpenGL固定機能投影用途(-1、-1)下ためには(1、1)左及びウィンドウの右上にあります。異なる座標空間を得るためには、投影行列を変更する必要があります。
このような完全な例については、the Haskell port of the NEHE tutorialsを参照してください。彼らはより多くのCバインディングのようなRAW OpenGLバインディングを使用します。
簡単にGoogleはこれを上がっ:いずれの場合で
http://www.haskell.org/haskellwiki/OpenGLTutorial1
、OpenGLはもともとCライブラリであるため、あなたがC(またはC++)で足が濡れて取得したいかもしれまず、あなたのため、元のOpenGLドキュメントをそのまま使用することができます。その後、Haskellバインディングを掘り下げ、Haskellでどのように同じOpenGL呼び出しを使用するかを確認したいことがあります。
私はすでにこれを見てきました。それはたくさんの写真を持っていますが、実際に何かをする方法を説明するものではありません。 – lewdsterthumbs
それはありますが、すぐには分かりません。 – tdammers
- 1. OpenGLを使って球を描く
- 2. OpenGLのアンドロイドで線を描く方法
- 3. OpenGL ES 2.0 GLKit線を描く
- 4. ベースマップを使って子午線と平行線を描く
- 5. アンドロイドでOpenGlを使ってサークルを描く方法は?
- 6. OpenGL GLUTでマウスを使ってポリゴンを描く
- 7. OpenGLでバッファを使って何かを描く
- 8. OpenGLを使ってアンドロイドで円を描く問題
- 9. iPhoneゲームアプリでOpenGL ESを使用してアニメーションで直線を描く方法は?
- 10. De CasteljauアルゴリズムをC++、OpenGLで使用してベジェ曲線を描く
- 11. ベジェ曲線の各点に接線を描くopengl
- 12. OpenGLでDDAを使用して線を動的に描画
- 13. canvas.jsを使って二重線でグラフを描くには?
- 14. OpenGL ESで線を点描する
- 15. キャンバスに「ゆっくり」線を描く
- 16. Googleグラフを使って折れ線グラフを描く方法
- 17. リストボックスの値を使って折れ線グラフを描く方法
- 18. visjsを使ってタイムラインに線グラフを描くには?
- 19. ベクトルからポイントのセットを使ってベジェ曲線を描く
- 20. MapboxとNominatimを使って複数のGeoJSON線を描く
- 21. Chartkick gemとGoogle chartを使って線形関数を描く
- 22. quantmodを使ってchartSeries plotに線を描くには?
- 23. 効率的にPythonを使って線を描く
- 24. pdfsharpを使ってpdfの水平線を描くには
- 25. OpenGLで3Dスプライトを描く
- 26. OpenGL/SDLを使った描画点
- 27. 法線を使ってOpenGLで.offを操作する
- 28. iPhoneでOpenGL ESを使用して直線を描画しますか?
- 29. キャンバスで線を描く
- 30. グラデーションカラーで線を描く
これは私がやろうとしているものでうまくいくようですが、うまく動作していないようです。プログラムはコンパイルされますが、実行すると線は描画されません。たぶん、私は正しいことをしていないか、間違った場所に置いています。繰り返しますが、私はOpenGLを初めて使っていて、実際にどのように動作するのか分かりません。あなたが完全なプログラム(初心者が理解できるもの)の多くとして私にそれを与えることができる方法はありますか? – lewdsterthumbs
さて、私は自分のコンピュータで動作する完全なサンプルプログラムを追加しました。 – dflemstr
@lewdsterthumbs [黒い画面を空にする40の方法](http://dmalcolm.livejournal.com/2433.html)をお楽しみください。 –