- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当我使用此代码示例时,我得到一个平坦的白色球体。
我期待一个从侧面发光并旋转的球体。
#include <GL/glut.h>
#include <GL/freeglut.h>
int angle = 0;
int _refreshmilliseconds = (1 / 60) * 1000; // 60 frames a second
void timer(int value) {
glutPostRedisplay();
glutTimerFunc(_refreshmilliseconds, timer, 0);
}
void display(void) {
/*
OPEN GL AND GRAPHICS FUNCTIONALITY
*/
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// Lighting
// Ambient light
GLfloat ambientCol[] = { 1.0f, 0.0f, 0.0f, 1.0f };
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientCol);
// Positioned light
GLfloat lightCol0[] = { 1.0f, 0.0f, 0.0f, 1.0f };
GLfloat lightPos0[] = { 0.5f, 0.0f, 1.0f, 1.0f };
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightCol0);
glLightfv(GL_LIGHT0, GL_POSITION, lightPos0);
// Keyboard-controlled circle, player1
glPushMatrix();
glRotatef(angle, 1.0f, 1.0f, 0.0f);
glutSolidSphere(0.5f, 20, 20);
glPopMatrix();
angle += 2;
if (angle >= 360) { angle = 0; }
glutSwapBuffers();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_NORMALIZE);
glutInitWindowSize(400, 400); // Set window size
glutInitWindowPosition(100, 100); // Set window position
glutCreateWindow("Embera 2.0.1"); // Create GLUT window
glutDisplayFunc(display);
glutTimerFunc(0, timer, 0);
glutMainLoop();
return 0;
}
为什么会这样?
最佳答案
问题是我创建的窗口的位置。我的 glEnable
调用都没有启动,因为它们是在我的窗口创建之前放置的。为了解决这个问题,我只是移动了这一行:
glutCreateWindow("Embera 2.0.1");
所以主函数看起来像这样:
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutCreateWindow("Embera 2.0.1");
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_NORMALIZE);
glutInitWindowSize(400, 400);
glutInitWindowPosition(100, 100);
glutDisplayFunc(display);
glutTimerFunc(0, timer, 0);
glutMainLoop();
return 0;
关于c++ - glutSolidSphere 没有被点亮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20169658/
我必须在类似“ Spring 质量”的系统的 3D 物理模拟中绘制大量球体。 我想知道一种绘制球体的有效方法,而不必在模拟的每一步都编译显示列表(每一步可能从毫秒到秒不等,具体取决于计算中涉及的物体数
我需要将地球纹理添加到 glutSolidSphere。问题是我无法弄清楚如何使纹理在整个球体上拉伸(stretch)并且仍然能够旋转。 我们正在启用纹理。 glTexGeni(GL_S, GL_TE
嗨,我的程序应该在屏幕中央显示一个纯红色的球体,我得到的只是球体的边界: int main(int argc, char **argv) { glutInit(&argc, argv); gl
当我使用此代码示例时,我得到一个平坦的白色球体。 我期待一个从侧面发光并旋转的球体。 #include #include int angle = 0; int _refreshmillisecon
我需要向 glutSolidSphere 添加地球纹理。问题是我无法弄清楚如何使纹理在整个球体上拉伸(stretch)并且仍然能够旋转。 我们正在启用纹理。 glTexGeni(GL_S, GL_TE
如何将纹理应用于 glutSolidSphere? 这是我已经尝试过但不起作用的方法: GLuint textureid; glGenTextures(1, &textureid);
我正在创建一个行星模拟,其中有 glutSolidSpheres 围绕太阳运行并且应该有跟踪线跟随它,使用 GL_LINE_STRIP 创建。 我遇到的问题是,这条轨迹并没有直接跟随行星在它后面,它看
我是一名优秀的程序员,十分优秀!