最基本的opengl 问题了吧
先把代码列出来
include <windows.h>
#include <gl/gl.h>
#include <gl\glu.h>
#include <gl\glaux.h>
#include <math.h>
void Init();
void CALLBACK Reshape(GLsizei w,GLsizei h);
void CALLBACK Display(); void Init()
{
glClearColor(0.0,0.0,0.0,1.0);
glClear(GL_COLOR_BUFFER_BIT); }
void CALLBACK Reshape(GLsizei w,GLsizei h)
{
//窗口大小(全部可绘图区)改变的时候
// 视见区(实际绘图区)的大小 坐标原点窗口左下角 向右 向上
glMatrixMode(GL_MODELVIEW);
glViewport(0,0,w,h); glMatrixMode(GL_PROJECTION);
glLoadIdentity(); glOrtho(0,w,0,h,-550,550); glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void CALLBACK Display()
{ glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(100.0f,0.0f,0.0f);
glTranslatef(0.0f,10.0f,0.0f);
glRotatef(45,1.0f,0.0f,0.0f);//反时针旋转
glColor3f(1.0,0.0,0.0);
size_t imgH=11,imgW=500; for (size_t i=0;i!=imgH;++i)
{
if (i%10!=0)
{
glBegin(GL_LINES);
glColor3f(0.0f,0.0f,0.0f);
glVertex3i(0,0,-i);
glVertex3i(imgW,0,-i);
glEnd();
glFlush(); }
else
{
glBegin(GL_LINES);
glColor3f(1.0f,1.0f,1.0f);
glVertex3i(0,0,-i);
glVertex3i(imgW,0,-i);
glEnd();
glFlush();
} } }
void main()
{
auxInitDisplayMode(AUX_RGBA |AUX_SINGLE);
auxInitPosition(0,0,500,500);//窗口大小 相对于屏幕的坐标而言 单位:像素 向右向下
auxInitWindow("0"); Init(); auxReshapeFunc(Reshape);
auxMainLoop(Display);
}
问题来了 注意i有两次机会进入else 子句
为什么画出来的线只有一条白线 如果把if里面的画图语句屏蔽掉 就有两条白线了
可是我在vc++6.0里面调试的时候 确实流程2次进入else子句 ,
那么为什么进入了两次却只画出一条白线呢?
先把代码列出来
include <windows.h>
#include <gl/gl.h>
#include <gl\glu.h>
#include <gl\glaux.h>
#include <math.h>
void Init();
void CALLBACK Reshape(GLsizei w,GLsizei h);
void CALLBACK Display(); void Init()
{
glClearColor(0.0,0.0,0.0,1.0);
glClear(GL_COLOR_BUFFER_BIT); }
void CALLBACK Reshape(GLsizei w,GLsizei h)
{
//窗口大小(全部可绘图区)改变的时候
// 视见区(实际绘图区)的大小 坐标原点窗口左下角 向右 向上
glMatrixMode(GL_MODELVIEW);
glViewport(0,0,w,h); glMatrixMode(GL_PROJECTION);
glLoadIdentity(); glOrtho(0,w,0,h,-550,550); glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void CALLBACK Display()
{ glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(100.0f,0.0f,0.0f);
glTranslatef(0.0f,10.0f,0.0f);
glRotatef(45,1.0f,0.0f,0.0f);//反时针旋转
glColor3f(1.0,0.0,0.0);
size_t imgH=11,imgW=500; for (size_t i=0;i!=imgH;++i)
{
if (i%10!=0)
{
glBegin(GL_LINES);
glColor3f(0.0f,0.0f,0.0f);
glVertex3i(0,0,-i);
glVertex3i(imgW,0,-i);
glEnd();
glFlush(); }
else
{
glBegin(GL_LINES);
glColor3f(1.0f,1.0f,1.0f);
glVertex3i(0,0,-i);
glVertex3i(imgW,0,-i);
glEnd();
glFlush();
} } }
void main()
{
auxInitDisplayMode(AUX_RGBA |AUX_SINGLE);
auxInitPosition(0,0,500,500);//窗口大小 相对于屏幕的坐标而言 单位:像素 向右向下
auxInitWindow("0"); Init(); auxReshapeFunc(Reshape);
auxMainLoop(Display);
}
问题来了 注意i有两次机会进入else 子句
为什么画出来的线只有一条白线 如果把if里面的画图语句屏蔽掉 就有两条白线了
可是我在vc++6.0里面调试的时候 确实流程2次进入else子句 ,
那么为什么进入了两次却只画出一条白线呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货