gpt4 book ai didi

c++ - glClear()不服从剪刀区域

转载 作者:可可西里 更新时间:2023-11-01 09:53:30 26 4
gpt4 key购买 nike

<分区>

我在已经打开的任意 Windows 7 窗口(例如 Windows 记事本窗口)中使用双缓冲绘制 Open GL 内容(直接 Win32 - 不使用 GLUT、FreeGLUT、GLFW 等)。我有窗口句柄,可以按预期绘制我想要的内容,但我看到 glClear() 函数有奇怪的行为。

据我了解,glClear() 函数应该只影响屏幕上由 glScissor() 函数定义的区域内的像素。我已经使用 glScissor() 定义了剪刀区域,然后使用 glEnable(GL_SCISSOR_TEST) 启用了剪刀功能。 glClearColor 设置为白色 (0,0,0,1)。我正在使用 glClear() 命令清除颜色和深度缓冲区。

当执行 SwapBuffers() 命令以在屏幕上呈现时,我选择的白色清晰颜色按照我的要求绘制在剪刀区域内,但窗口的其余部分 在外面剪刀区域被漆成黑色,而不是像我预期的那样让这些像素保持原样。

如图所示,剪刀区域(白色)和对象(3D 立方体)绘制正确,但记事本窗口的其余像素设置为黑色,之前在该记事本窗口中绘制的任何内容都被覆盖.

glClearColor(1.0f, 1.0f, 1.0f, 1.0f);               // white background
glViewport(0, 0, 300, 300);
glScissor(0, 0, 250, 400);
glEnable(GL_SCISSOR_TEST);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//... draw cube inside glBegin()/glEnd()...
SwapBuffers(hDC);

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com