我有一台带有ATI radeon X1600显卡的2007 Macbook pro。我试图使用多重采样功能使抗锯齿工作。
使用GlView,这是我手边的信息:
渲染器信息为:
渲染器:ATI Radeon X1600 OpenGL EngineVendor:ATI Technologies Inc.内存:128 MB版本:2.1 ATI-7.0.52设备:MacBookPro2,2Shading语言版本:1.20
我检查了arb_multisample的扩展信息,它说: “升级到OpenGL 1.3中的核心功能”,这是正确的假设 在我的代码中我可以简单地说(因为我在Opengl 2.1上):
glEnable(GL_MULTISAMPLE)
在我的应用程序代码中,我有一个数据结构,它包含以下信息: 然后我使用glDrawElements等渲染顶点,索引和纹理 是三角形网格。
代码看起来像这样:
(capi:define-interface stad-viewer (capi:interface)
((double-buffered-p :initform t :initarg :double-buffered-p :accessor double-
buffered-p))
(:panes
(canvas opengl:opengl-pane
:configuration (list :rgba t :depth t :depth-buffer 32 :double-buffered t)
:min-width 1440
:min-height 900
:message "Stadium demo"
:drawing-mode :quality
:reader canvas
:resize-callback 'resize-stad-canvas
:display-callback 'redisplay-stad-canvas))
(:layouts
(main capi:column-layout '(canvas)))
(:default-initargs :auto-menus NIL :title "Stadium Viewer"))
;;; enable multisampling
(opengl:gl-enable opengl:*gl-multisample*)
(opengl:gl-sample-coverage 0.70 opengl:*gl-false*)
;;; some more opengl commands....
;;; rendering meshes
(dolist (wfmesh *wfmeshes*)
(format t " ------ PREPARING MESH ---- ~A ~% " (mesh-name wfmesh))
(multiple-value-bind (vertices indices)
(prepare-mesh wfmesh)
(let* ((gl-vertices (gl-vertexes vertices))
(gl-indices (gl-indexes indices)))
(if *texture-ids*
(multiple-value-bind (texture-id found)
(gethash (mesh-name wfmesh) *texture-ids*)
(when found
(opengl:gl-bind-texture opengl:*gl-texture-2d* texture-id)
(opengl:gl-tex-coord-pointer 2 opengl:*gl-float* 0
(gl-texels (mesh-vertices wfmesh)
1.0 t)))))
(opengl:gl-vertex-pointer 3 opengl:*gl-float* 0 gl-vertices)
(opengl:gl-draw-elements opengl:*gl-triangles*
(length indices)
opengl:*gl-unsigned-int*
gl-indices))))
此外,我已启用上述多重采样。 However this is what I get:
锯齿状边缘清晰可见。
所以我的问题是:
答案 0 :(得分:3)
您使用的是Cocoa NSOpenGLView吗?因为那样你就可以在Interface Builder中启用多重采样。无论如何,您必须专门使用样本缓冲区创建渲染上下文。无论如何,glEnable(GL_MULTISAMPLE)还不够。为了获得更具体的帮助,您需要说明如何创建OpenGL窗口/视图。