利用OpenGL實現三維繪圖


#include "windows.h"
#include "gl/gl.h"
#include "gl/glaux.h"
#include "math.h"

void myinit()
{ glClearColor(1,1,0,0);
  GLfloat ambient[]={0.5,0.5,0.5,0};
  glLightModelfv(GL_LIGHT_MODEL_AMBIENT,ambient);
  GLfloat mat_ambient[]={0.8f,0.8f,0.8f,1.0f};
  GLfloat mat_diffuse[]={0.8f,0.0f,0.8f,1.0f};
  GLfloat mat_specular[]={1.0f,0.0f,1.0f,1.0f};
  GLfloat mat_shininess[]={50.0f};
  GLfloat light_diffuse[]={0,0,0.5,1};
  GLfloat light_position[]={0,0,1.0,0};
  glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,mat_ambient);
  glMaterialfv(GL_FRONT_AND_BACK,GL_DIFFUSE,mat_diffuse);
  glMaterialfv(GL_FRONT_AND_BACK,GL_SPECULAR,mat_specular);
  glMaterialfv(GL_FRONT_AND_BACK,GL_SHININESS,mat_shininess);
  glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);
  glLightfv(GL_LIGHT0,GL_POSITION,light_position);
  glEnable(GL_LIGHTING);
  glEnable(GL_LIGHT0);
  glDepthFunc(GL_LESS);
  glEnable(GL_DEPTH_TEST);
  }
 void CALLBACK display()
 { 
 glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
 auxSolidSphere(1.0);
 glFlush();
 auxSwapBuffers();
 _sleep(100);
 }
  void CALLBACK Idledisplay()
  {  static double x=-0.1,y=0.0;
     static BOOL mark=TRUE;
 static double step=0.01;
 x+=step;
 if(x<=0.1&&x>=-0.1)
 {  if(step>0)
        y=sqrt(0.01-x*x);
      else 
    y=-sqrt(0.01-x*x);
    glTranslated(x,y,0);
 }
 else
 { step=0-step;
 }
 display();
 }
  void CALLBACK myReshape(GLsizei w,GLsizei h)
  {  glViewport(0,0,w,h);
     glMatrixMode(GL_PROJECTION);
     glLoadIdentity();
     if(w<=h)
 glOrtho(-3.5,3.5,-3.5*(GLfloat)w/(GLfloat)h,3.5*(GLfloat)w/(GLfloat)h,-10,10);
 else
    glOrtho(-3.5*(GLfloat)w/(GLfloat)h,3.5*(GLfloat)w/(GLfloat)h,-3.5,3.5,-10,10);
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 }
  void main()
  { auxInitDisplayMode(AUX_DOUBLE|AUX_RGBA);
    auxInitPosition(0,0,400,400);
auxInitWindow("circle");
    myinit();
auxReshapeFunc(myReshape);
auxIdleFunc(Idledisplay);
auxMainLoop(display);
  }
出錯提示:Linking...
2.obj : error LNK2001: unresolved external symbol __imp__glDepthFunc@4
2.obj : error LNK2001: unresolved external symbol __imp__glEnable@4
2.obj : error LNK2001: unresolved external symbol __imp__glLightfv@12
2.obj : error LNK2001: unresolved external symbol __imp__glMaterialfv@12
2.obj : error LNK2001: unresolved external symbol __imp__glLightModelfv@8
2.obj : error LNK2001: unresolved external symbol __imp__glClearColor@16
2.obj : error LNK2001: unresolved external symbol _auxSwapBuffers@0
2.obj : error LNK2001: unresolved external symbol __imp__glFlush@0
2.obj : error LNK2001: unresolved external symbol _auxSolidSphere@8
2.obj : error LNK2001: unresolved external symbol __imp__glClear@4
2.obj : error LNK2001: unresolved external symbol __imp__glTranslated@24
2.obj : error LNK2001: unresolved external symbol __imp__glOrtho@48
2.obj : error LNK2001: unresolved external symbol __imp__glLoadIdentity@0
2.obj : error LNK2001: unresolved external symbol __imp__glMatrixMode@4
2.obj : error LNK2001: unresolved external symbol __imp__glViewport@16
2.obj : error LNK2001: unresolved external symbol _auxMainLoop@4
2.obj : error LNK2001: unresolved external symbol _auxIdleFunc@4
2.obj : error LNK2001: unresolved external symbol _auxReshapeFunc@4
2.obj : error LNK2001: unresolved external symbol _auxInitWindowA@4
2.obj : error LNK2001: unresolved external symbol _auxInitPosition@16
2.obj : error LNK2001: unresolved external symbol _auxInitDisplayMode@4
Debug/1.exe : fatal error LNK1120: 21 unresolved externals
執行 link.exe 時出錯.

1.exe - 1 error(s), 0 warning(s)

麻煩幫忙改一下,謝謝

7 个解决方案

#1


你需要在Vc編譯環境中配置Opengl的開發環境,上網查一下,照着配置就行了。

#2


看一下NEHE的教程,在vc 里配置好opengl 就沒有問題的了

#3


LNK錯誤,LNK2001,是你的相關的lib文件沒有關聯,應該是opengl的lib文件沒有關聯!你把這3個lib文件的配置到你的工程里面:

opengl32.lib glu32.lib glaux.lib 

如果是vc6的話,這樣配置:project--settings--link--object/library modules:   里面輸入這幾個文件名稱!

#4


謝謝各位!解決了^-^

#5


謝謝各位!解決了^-^

#6


哈哈~~我也遇到這問題

#7


OpenGL學習中。

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com