如何在OpenGL中获得镜面反射颜色?

发布于 2024-12-18 03:06:11 字数 435 浏览 3 评论 0原文

我的代码适用于除镜面反射组件之外的所有内容。

glEnable(GL_COLOR_SUM);
...
glEnableClientState(GL_COLOR_ARRAY);
glColorPointer(4, GL_UNSIGNED_BYTE, 0, color);
glEnableClientState(GL_SECONDARY_COLOR_ARRAY);
glSecondaryColorPointer(3, GL_UNSIGNED_BYTE, 0, specular);
...
glDrawArrays(D3DPT_TRIANGLELIST, 0, 2);

它似乎忽略了镜面反射,但颜色、纹理坐标、位置等都完全没问题。

这不使用灯光和材料。固定顶点管道。不幸的是,着色器目前不是一个选择。

glGetError() 在任何时候都不会报告错误。

My code works for everything except specular component.

glEnable(GL_COLOR_SUM);
...
glEnableClientState(GL_COLOR_ARRAY);
glColorPointer(4, GL_UNSIGNED_BYTE, 0, color);
glEnableClientState(GL_SECONDARY_COLOR_ARRAY);
glSecondaryColorPointer(3, GL_UNSIGNED_BYTE, 0, specular);
...
glDrawArrays(D3DPT_TRIANGLELIST, 0, 2);

It seems to ignore specular, but color, texture co-ordinates, positions, and so on are all completely fine.

This is NOT using lights and materials. Fixed-vertex pipeline. Shaders are not an option at this point, unfortunately.

glGetError() reports no errors at any point either.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

水波映月 2024-12-25 03:06:11

你说:

这没有使用灯光和材质。

仅当存在光源时才能计算镜面反射。 (如果您愿意,我可以深入了解其背后的数学...)

来自 http://en.wikipedia。 org/wiki/Specular_highlight

镜面高光是在照明时出现在闪亮物体上的亮点。

顺便说一句,D3DPT_TRIANGLELIST 在 OpenGL 代码中做什么?这只是问题中的一个错误还是实际上是这样的?

you said:

This is NOT using lights and materials.

specular can only be calculated when there is a light to get it from. (if you want I can go into the math behind it...)

from http://en.wikipedia.org/wiki/Specular_highlight:

A specular highlight is the bright spot of light that appears on shiny objects when illuminated.

on a side note what is D3DPT_TRIANGLELIST doing in OpenGL code? is that just a mistake in the question or does it actually work like that?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文