У меня есть устаревшее приложение с фиксированным конвейером OpenGL, которое было перенесено из Windows (32-разрядной версии) в 64-разрядную версию MacOS.
Проблема в том, что если у меня есть сцена с непозиционный свет, все работает отлично. Если я добавлю позиционный прожектор, два источника света будут взаимодействовать, и я получу неправильные результаты.
Вот «нормальный» случай: прожектор находится справа:
Здесь я переместил прожектор вниз (Y = 1). Обратите внимание на черные области на кубе. Это неправильно.
Теперь я выключаю прожектор, закомментировав вызов "makeALight" для прожектора (свет 6). Теперь куб равномерно освещен.
Вот тестовый код, который я использую для генерации источников света. Для его сборки вам нужно будет установить glfw с Brew.
У меня есть устаревшее приложение с фиксированным конвейером OpenGL, которое было перенесено из Windows (32-разрядной версии) в 64-разрядную версию MacOS. Проблема в том, что если у меня есть сцена с непозиционный свет, все работает отлично. Если я добавлю позиционный прожектор, два источника света будут взаимодействовать, и я получу неправильные результаты. Вот «нормальный» случай: прожектор находится справа: [img]https://i.sstatic.net/JdkjWj2C.png[/img]
Здесь я переместил прожектор вниз (Y = 1). Обратите внимание на черные области на кубе. Это [b]неправильно[/b]. [img]https://i.sstatic.net/jXNmMcFd.png[/img]
Теперь я выключаю прожектор, закомментировав вызов "makeALight" для прожектора (свет 6). Теперь куб равномерно освещен. [img]https://i.sstatic.net/pBx68U9f.png[/img]
Вот тестовый код, который я использую для генерации источников света. Для его сборки вам нужно будет установить glfw с Brew. [code]#define GL_SILENCE_DEPRECATION 1
// Function to generate a checkerboard texture GLuint generateCheckerboardTexture(int width, int height) { int checkerSize = 8; // Size of each square in the checkerboard GLubyte *data = new GLubyte[width * height * 3];
for (int y = 0; y < height; ++y) { for (int x = 0; x < width; ++x) { int checkerX = x / checkerSize; int checkerY = y / checkerSize; bool isWhite = (checkerX + checkerY) % 2 == 0;
// Function to render a cube with explicit material properties // Function to render a cube with explicit metallic material properties void renderCube() { // Define metallic material properties GLfloat materialAmbient[] = {0.25f, 0.25f, 0.25f, 1.0f}; // Low ambient reflection GLfloat materialDiffuse[] = {0.4f, 0.4f, 0.4f, 1.0f}; // Slightly higher diffuse reflection GLfloat materialSpecular[] = {0.77f, 0.77f, 0.77f, 1.0f}; // High specular reflection GLfloat materialShininess = 76.8f; // High shininess for a metallic look
// Apply the material properties to the cube glMaterialfv(GL_FRONT, GL_AMBIENT, materialAmbient); glMaterialfv(GL_FRONT, GL_DIFFUSE, materialDiffuse); glMaterialfv(GL_FRONT, GL_SPECULAR, materialSpecular); glMaterialf(GL_FRONT, GL_SHININESS, materialShininess);
glBegin(GL_QUADS);
// Front Face glNormal3f(0.0f, 0.0f, 1.0f); glVertex3f(-1.0f, -1.0f, 1.0f); glVertex3f(1.0f, -1.0f, 1.0f); glVertex3f(1.0f, 1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
// Back Face glNormal3f(0.0f, 0.0f, -1.0f); glVertex3f(-1.0f, -1.0f, -1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); glVertex3f(1.0f, 1.0f, -1.0f); glVertex3f(1.0f, -1.0f, -1.0f);
// Top Face glNormal3f(0.0f, 1.0f, 0.0f); glVertex3f(-1.0f, 1.0f, -1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); glVertex3f(1.0f, 1.0f, 1.0f); glVertex3f(1.0f, 1.0f, -1.0f);
Я намерен реализовать затенение по Гуро с двумя источниками света (точечный свет и направленный свет)
Я хочу перевести точечный свет и повернуть направленный свет с помощью функции обратного вызова клавиатуры OpenGL.
Но согласно моему текущему коду...
Недавно я добавил индивидуальные схемы Light/Dark Color в приложение Vuetify, и пользователь может переключаться между ними, и это работает хорошо, за исключением одной вещи: цвет стержня прокрутки не меняется. В инструментах Dev Browser я проследил...
Недавно я добавил индивидуальные схемы Light/Dark Color в приложение Vuetify, и пользователь может переключаться между ними, и это работает хорошо, за исключением одной вещи: цвет стержня прокрутки не меняется. В инструментах Dev Browser я проследил...
Недавно я добавил индивидуальные схемы Light/Dark Color в приложение Vuetify, и пользователь может переключаться между ними, и это работает хорошо, за исключением одной вещи: цвет стержня прокрутки не меняется. В инструментах Dev Browser я проследил...