- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为一年级学生编写一个数学教育系统。我的目标是让所有交互都在一个窗口内运行。当我单击第一个窗口(+ 窗口)时,出现的只是黑色窗口,没有任何输出,但在命令提示符下它运行正常。
#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
#include <glut.h>
#include <time.h>
using namespace std;
GLfloat xrot;
GLfloat yrot;
bool mouseDown = false;
bool createWindow = false;
int m=0;
int n=0;
int num1=0;
int num2=0;
int counter=0;
//-------------------------------------------------------------------
void handleKeypress(unsigned char key,int x,int y)
{
switch(key)
{
case 27:
exit(0);
}
}
void handleResize(int w,int h)
{
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
gluPerspective(45.0,(double)w/(double)h,1.0,200);
}
void idle()
{
if (!mouseDown)
{
xrot+= 0.3f;
yrot+= 0.4f;
}
glutPostRedisplay();
}
void drawScene1()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glBegin(GL_QUADS);
glColor3f(1.0,0.0,0.0);
glVertex3f(-1.0f,5.0f,-20.0f);
glVertex3f(-1.0f,-5.0f,-20.0f);
glVertex3f(1.0f,-5.0f,-20.0f);
glVertex3f(1.0f,5.0f,-20.0f);
glEnd();
glRotatef(90.0,0.0f,0.0f,1.0f);
glBegin(GL_QUADS);
glColor3f(1.0,0.0,0.0);
glVertex3f(-1.0f,5.0f,-20.0f);
glVertex3f(-1.0f,-5.0f,-20.0f);
glVertex3f(1.0f,-5.0f,-20.0f);
glVertex3f(1.0f,5.0f,-20.0f);
glutSwapBuffers();
}
void drawScene2()
{
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(90.0,0.0f,0.0f,1.0f);
glBegin(GL_QUADS);
glColor3f(0.0,0.0,1.0);
glVertex3f(-1.0f,5.0f,-20.0f);
glVertex3f(-1.0f,-5.0f,-20.0f);
glVertex3f(1.0f,-5.0f,-20.0f);
glVertex3f(1.0f,5.0f,-20.0f);
glEnd();
glutSwapBuffers();
}
void myInit(void)
{
glEnable(GL_DEPTH_TEST);
glClearColor(1.0, 1.0, 1.0, 0.0); // set the background to white
glColor3f(0.0, 0.0, 0.0);
// set the drawing color to black
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1000.0,1000.0,-1000.0,1000.0,-100.0,100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
//------------------------------------------------------
void triangle()
{
glBegin(GL_TRIANGLES);
glColor3f(1.0f,0.0f,0.0f);
glVertex3f(0.0f,100.0f,0.0f);
glVertex3f(100.0f,-100.0f,0.0f);
glVertex3f(-100.0f,-100.0f,0.0f);
glEnd();
}
void minus()
{
glPushMatrix();
glBegin(GL_QUADS);
glColor3f(0.0f,1.0f,0.0f);
glVertex3f(-200.0f,50.0f,0.0f);
glVertex3f(-200.0f,-50.0f,0.0f);
glVertex3f(200.0f,-50.0f,0.0f);
glVertex3f(200.0f,50.0f,0.0f);
glEnd();
glPopMatrix();
}
void myDisplay(void)
{
// Clear Color and Depth Buffers
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Reset transformations
glLoadIdentity();
// Set the camera
gluLookAt(0, 0, 3, 0 , 0 , 0 , 0.0f,1.0f,0.0f);
//Generate random number
srand (time(NULL));
num1 = rand() % 10 +1;
num2 = rand() % 10 +1;
if(num1 < num2){
int temp = num1;
num1 = num2;
num2 = temp;
}
//rows and column
m = 2; //row
n = 5; //column
counter=0; //make sure it zero
//First Number to be draw
glPushMatrix(); //set as origin
glTranslatef( -700.0,700, 0 ); //translate
//draw
for(int i = 0; i < m; i++){ //row
for(int j=0; j < n; j++) { //column
if(counter>=num1) break; //a=how many triangle need to draw; s=already draw how many triangle;
glPushMatrix(); //set transformation
glTranslatef( i*200.0 ,j*-200.0, 0 ); //translate
triangle(); //draw triangle
glPopMatrix(); //reset transformation
counter++; //counter s
}
}
glPopMatrix(); //reset transformation
//create plus sign
glPushMatrix(); //set transformation or object position/orientation/scale for reset
glTranslatef( 0.0,400, 0 );
minus();
glPopMatrix(); //reset transformation to origin
counter=0; //reset counter
//Second number to be draw
glPushMatrix();
glTranslatef( 500.0,700, 0 );
for(int i = 0; i < m; i++){
for(int j=0; j < n; j++) {
if(counter>=num2) break;
glPushMatrix();
glTranslatef( i*200.0 ,j*-200.0, 0 );
triangle();
glPopMatrix();
counter++;
}
}
glPopMatrix();
//Control
glutSwapBuffers();//take the drawing to the screen
//check answer
/*cout<<num1<<endl; //debug
cout<<num2<<endl;*/
int check=0;
int answer=0;
cout << "Answer ???"<<endl;
cin >> answer;
while(true){
check=num1-num2;
if(answer==check){
cout << "CORRECT!!!"<<endl;
break;
} else{
cout << "TRY AGAIN!!!";
cout << "Answer ???"<<endl;
cin >> answer;
}
}
}
void mouse (int button, int state, int x, int y){
if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN){
myInit();
triangle();
minus();
myDisplay();
}
}
int main(int argc,char** argv)
{
glutInit(&argc,argv);
myInit();
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);
glutInitWindowSize(500,500);
//window1=
glutCreateWindow("First window");
glutDisplayFunc(drawScene1);
glutKeyboardFunc(handleKeypress);
glutReshapeFunc(handleResize);
glutMouseFunc(mouse);
//create the second window
//window2 =
glutCreateWindow("Second Window");
//define a window position for second window
glutPositionWindow(540,40);
// register callbacks for second window, which is now current
glutReshapeFunc(handleResize);
glutDisplayFunc(drawScene2);
glutKeyboardFunc(handleKeypress);
glutMouseFunc(mouse);
glutMainLoop();
return 0;
}
最佳答案
您将 stdio(即控制台输入/输出)与窗口系统事件处理混合在一起。这是问题的秘诀。 stdio 操作阻塞,直到它们完成。在从 cin 读取的情况下,进程将阻塞,等待来自控制台的输入,直到输入换行符。在此期间,不会处理任何窗口事件,也不会向 OpenGL 窗口绘制任何内容。
简而言之,您不能像以前那样将两者混为一谈。您可以很好地使用输出(cout 和 cerr),如果没有连接控制台,它们将写入 NIL,但尝试读取某些内容会无限期地阻塞。您必须考虑 stdio 以外的其他方式来与事件交互程序中的用户进行交互。 IE。您必须在键盘回调中处理按键事件。
关于c# - 未在 cmd 提示符下运行时,OpenGL 未显示正确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16420991/
SQLite、Content provider 和 Shared Preference 之间的所有已知区别。 但我想知道什么时候需要根据情况使用 SQLite 或 Content Provider 或
警告:我正在使用一个我无法完全控制的后端,所以我正在努力解决 Backbone 中的一些注意事项,这些注意事项可能在其他地方更好地解决......不幸的是,我别无选择,只能在这里处理它们! 所以,我的
我一整天都在挣扎。我的预输入搜索表达式与远程 json 数据完美配合。但是当我尝试使用相同的 json 数据作为预取数据时,建议为空。点击第一个标志后,我收到预定义消息“无法找到任何内容...”,结果
我正在制作一个模拟 NHL 选秀彩票的程序,其中屏幕右侧应该有一个 JTextField,并且在左侧绘制弹跳的选秀球。我创建了一个名为 Ball 的类,它实现了 Runnable,并在我的主 Draf
这个问题已经有答案了: How can I calculate a time span in Java and format the output? (18 个回答) 已关闭 9 年前。 这是我的代码
我有一个 ASP.NET Web API 应用程序在我的本地 IIS 实例上运行。 Web 应用程序配置有 CORS。我调用的 Web API 方法类似于: [POST("/API/{foo}/{ba
我将用户输入的时间和日期作为: DatePicker dp = (DatePicker) findViewById(R.id.datePicker); TimePicker tp = (TimePic
放宽“邻居”的标准是否足够,或者是否有其他标准行动可以采取? 最佳答案 如果所有相邻解决方案都是 Tabu,则听起来您的 Tabu 列表的大小太长或您的释放策略太严格。一个好的 Tabu 列表长度是
我正在阅读来自 cppreference 的代码示例: #include #include #include #include template void print_queue(T& q)
我快疯了,我试图理解工具提示的行为,但没有成功。 1. 第一个问题是当我尝试通过插件(按钮 1)在点击事件中使用它时 -> 如果您转到 Fiddle,您会在“内容”内看到该函数' 每次点击都会调用该属
我在功能组件中有以下代码: const [ folder, setFolder ] = useState([]); const folderData = useContext(FolderContex
我在使用预签名网址和 AFNetworking 3.0 从 S3 获取图像时遇到问题。我可以使用 NSMutableURLRequest 和 NSURLSession 获取图像,但是当我使用 AFHT
我正在使用 Oracle ojdbc 12 和 Java 8 处理 Oracle UCP 管理器的问题。当 UCP 池启动失败时,我希望关闭它创建的连接。 当池初始化期间遇到 ORA-02391:超过
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve
引用这个plunker: https://plnkr.co/edit/GWsbdDWVvBYNMqyxzlLY?p=preview 我在 styles.css 文件和 src/app.ts 文件中指定
为什么我的条形这么细?我尝试将宽度设置为 1,它们变得非常厚。我不知道还能尝试什么。默认厚度为 0.8,这是应该的样子吗? import matplotlib.pyplot as plt import
当我编写时,查询按预期执行: SELECT id, day2.count - day1.count AS diff FROM day1 NATURAL JOIN day2; 但我真正想要的是右连接。当
我有以下时间数据: 0 08/01/16 13:07:46,335437 1 18/02/16 08:40:40,565575 2 14/01/16 22:2
一些背景知识 -我的 NodeJS 服务器在端口 3001 上运行,我的 React 应用程序在端口 3000 上运行。我在 React 应用程序 package.json 中设置了一个代理来代理对端
我面临着一个愚蠢的问题。我试图在我的 Angular 应用程序中延迟加载我的图像,我已经尝试过这个2: 但是他们都设置了 src attr 而不是 data-src,我在这里遗漏了什么吗?保留 d
我是一名优秀的程序员,十分优秀!