如何在球拍中用OpenGL绘制三角形
我试图从一个简单的GUI窗口中获得这个三角形示例,但我看到的只是一个黑框。我错过了什么来让一些东西出现如何在球拍中用OpenGL绘制三角形,opengl,racket,Opengl,Racket,我试图从一个简单的GUI窗口中获得这个三角形示例,但我看到的只是一个黑框。我错过了什么来让一些东西出现 #朗球拍 (需要球拍/图形用户界面/底座) sgl sgl/gl矢量) (定义框架(新框架%[标签“OpenGL”])) (定义(绘制自dc) (发送自我 使用gl上下文 (lambda() (gl“开始”三角形) (德国劳埃德船级社顶点1 2 3) (gl-vertex-v(gl浮点向量1 2 3 4)) (完) (定义画布(新画布%) [父帧] [最小宽度500] [最小高度500] [样
#朗球拍
(需要球拍/图形用户界面/底座)
sgl
sgl/gl矢量)
(定义框架(新框架%[标签“OpenGL”]))
(定义(绘制自dc)
(发送自我
使用gl上下文
(lambda()
(gl“开始”三角形)
(德国劳埃德船级社顶点1 2 3)
(gl-vertex-v(gl浮点向量1 2 3 4))
(完)
(定义画布(新画布%)
[父帧]
[最小宽度500]
[最小高度500]
[样式(gl)]
[绘制回调图])
(发送帧显示#t)
以下代码将红色三角形绘制到画布中。您可以用该示例代码替换draw triangle
中的代码,但它似乎只显示一些命名约定,实际上什么也不做
#lang racket/base
(require racket/gui
sgl)
(define (draw-triangle)
(gl-begin 'triangles)
(gl-color 1 0 0)
(gl-vertex 0 0 0)
(gl-vertex 0.75 0 0)
(gl-vertex 0.75 0.75 0)
(gl-end))
(define my-canvas%
(class* canvas% ()
(inherit with-gl-context swap-gl-buffers)
(define/override (on-paint)
(with-gl-context (lambda ()
(draw-triangle)
(swap-gl-buffers))))
(super-instantiate () (style '(gl)))))
(define frame (new frame%
[label "OpenGL"]
[min-width 500]
[min-height 500]))
(define canvas (new my-canvas%
[parent frame]))
(send frame show #t)
嘿,马丁,谢谢你的回答!我可以让它工作,但我必须在
绘制三角形的开始处添加另一条线
:(gl视口0 500 500)