Haskell OpenGL 项目教程
OpenGLHaskell bindings to OpenGL项目地址:https://gitcode.com/gh_mirrors/openg/OpenGL
1. 项目的目录结构及介绍
OpenGL/
├── LICENSE
├── README.md
├── Setup.hs
├── app/
│ └── Main.hs
├── src/
│ ├── Graphics/
│ │ └── GL/
│ │ ├── GL.hs
│ │ ├── GLU.hs
│ │ └── GLUT.hs
│ └── Paths_OpenGL.hs
├── stack.yaml
└── OpenGL.cabal
目录结构介绍
- LICENSE: 项目的开源许可证文件。
- README.md: 项目的介绍和使用说明。
- Setup.hs: Haskell项目的设置文件。
- app/: 包含项目的启动文件
Main.hs
。 - src/: 包含项目的源代码,主要分为
Graphics/GL/
目录,其中包含GL.hs
,GLU.hs
,GLUT.hs
等文件。 - stack.yaml: Stack 构建工具的配置文件。
- OpenGL.cabal: Cabal 构建工具的配置文件。
2. 项目的启动文件介绍
app/Main.hs
module Main where
import Graphics.GL.GL
import Graphics.GL.GLU
import Graphics.GL.GLUT
main :: IO ()
main = do
-- 初始化 GLUT
initialDisplayMode $= [DoubleBuffered]
initialWindowSize $= Size 800 600
createWindow "OpenGL in Haskell"
-- 设置 GLUT 回调函数
displayCallback $= display
reshapeCallback $= Just reshape
keyboardMouseCallback $= Just keyboardMouse
-- 进入 GLUT 主循环
mainLoop
display :: DisplayCallback
display = do
clear [ColorBuffer]
-- 在这里添加你的 OpenGL 渲染代码
flush
reshape :: ReshapeCallback
reshape size = do
viewport $= (Position 0 0, size)
postRedisplay Nothing
keyboardMouse :: KeyboardMouseCallback
keyboardMouse key state modifiers position = return ()
启动文件介绍
app/Main.hs
: 这是项目的启动文件,包含了main
函数,负责初始化 GLUT 并设置 OpenGL 的显示模式、窗口大小和回调函数。display
函数用于渲染场景,reshape
函数用于处理窗口大小变化,keyboardMouse
函数用于处理键盘和鼠标事件。
3. 项目的配置文件介绍
stack.yaml
resolver: lts-18.18
packages:
- .
extra-deps: []
flags: {}
extra-package-dbs: []
OpenGL.cabal
name: OpenGL
version: 0.1.0.0
synopsis: OpenGL bindings for Haskell
description: This package provides bindings for OpenGL, GLU, and GLUT.
homepage: https://github.com/haskell-opengl/OpenGL
license: BSD3
author: John Doe
maintainer: john.doe@example.com
category: Graphics
build-type: Simple
extra-source-files: README.md
cabal-version: >=1.10
executable OpenGL
main-is: Main.hs
other-modules: Paths_OpenGL
build-depends: base >=4.14 && <4.15
, GLUT
, OpenGL
hs-source-dirs: app
default-language: Haskell2010
配置文件介绍
stack.yaml
: 这是 Stack 构建工具的配置文件,指定了项目的依赖解析器和包信息。OpenGL.cabal
: 这是 Cabal 构建工具的配置文件,定义了项目的名称、版本、描述、许可证、作者、维护者等信息。executable OpenGL
部分定义了可执行文件的入口点Main.hs
和其他依赖项。
通过以上配置,项目可以被正确构建和运行。
OpenGLHaskell bindings to OpenGL项目地址:https://gitcode.com/gh_mirrors/openg/OpenGL