gpt4 book ai didi

c - 当您使用负参数调用 glClearColor 时会发生什么?

转载 作者:行者123 更新时间:2023-11-30 15:55:01 25 4
gpt4 key购买 nike

我正在开发一个简单的 OpenGL 应用程序,它允许用户通过单击并向左(使其不那么强烈)或向右(更加强烈)拖动来调整简单窗口的背景颜色。例如,当向右拖动时,我有这样的结果:

intensity += 0.0001*x;  //where x is the current mouse location 

...向左,另一种方式:

intensity -= 0.0001*x;

intensity 是全局静态 GLfloat,它会传递给显示函数中的 glClearColor,该函数会被多次调用。当用户在向右拖动时增强颜色时,此策略效果很好,但在向左拖动时在某个点之后它会变得困惑:当我拖动时,颜色变得不那么强烈并返回到应有的黑色,但随后又增强回原来的颜色。

我认为问题在于,当我拖动太远时,强度(应在 0 和 1 之间)会变为负值,因此,glClearColor 只需将符号改回即可解决问题为正(?)。如果是这种情况,如何强制传递给 glClearColor 的值保持在正确的范围内?我尝试通过确保当前强度不会变为负值/如果强度已经太低则不会发生调整来解决问题,但它似乎不起作用:

if(x <= xPrev && intensity >= (.0001*x))  //moving left to de-intensify color
intensity -= 0.0001*x;

...我这样做是否错误,或者 glClearColor 处理负值的方式与我预期的不同?

出现的另一个有趣的问题是,我的“强度”调整似乎仅适用于 r、g 和/或 b 值(即,我将“强度”作为 glClearColor 中的其中之一传递) code>。使用 a 值不起作用...但它不是应该改变颜色强度吗?

最佳答案

这听起来有点像 hysteresis问题。目前尚不清楚事件是如何接收的,或者 x 所在的坐标系。也许在按下按钮时放置一个“ anchor ”(xStart),并处理所有后续值拖动时作为该值的偏移量。您对窗口和事件使用什么工具包/库?如果您从控制台启动,也许可以添加跟踪语句,例如:

fprintf(stderr, "%.8e\n", x);

查看 x 的值是否符合您对每一帧的预期。

glClearColor将值限制为 [0, 1],所以这可能不是问题。也许追踪强度会有用?

关于c - 当您使用负参数调用 glClearColor 时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12593559/

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