17事例十七:立体文字和平面文字
Posted lotuses
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了17事例十七:立体文字和平面文字相关的知识,希望对你有一定的参考价值。
namespace sharpGLTest17 public partial class Form1 : Form private float rotation = 0.0f; public Form1() InitializeComponent(); private void openGLControl_OpenGLInitialized(object sender, EventArgs e) OpenGL gl = openGLControl.OpenGL; float[] global_ambient = new float[] 0.5f, 0.5f, 0.5f, 1.0f ; float[] light0pos = new float[] 0.0f, 0.0f, 10.0f, 1.0f ; //光源位置 float[] light0ambient = new float[] 0.2f, 0.2f, 0.2f, 1.0f ; //环境光参数 float[] light0diffuse = new float[] 0.9f, 0.9f, 0.3f, 1.0f ; //漫射光参数 float[] light0specular = new float[] 0.8f, 0.8f, 0.8f, 1.0f ;//镜面反射 float[] lmodel_ambient = new float[] 0.2f, 0.2f, 0.2f, 1.0f ; gl.LightModel(OpenGL.GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); gl.LightModel(OpenGL.GL_LIGHT_MODEL_AMBIENT, global_ambient); gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_POSITION, light0pos); gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_AMBIENT, light0ambient); gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_DIFFUSE, light0diffuse); gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_SPECULAR, light0specular); gl.Enable(OpenGL.GL_LIGHTING); gl.Enable(OpenGL.GL_LIGHT0); gl.ShadeModel(OpenGL.GL_SMOOTH); gl.ClearColor(0, 0, 0, 0); private void openGLControl_Resized(object sender, EventArgs e) OpenGL gl = openGLControl.OpenGL; gl.MatrixMode(OpenGL.GL_PROJECTION); gl.LoadIdentity(); gl.Perspective(60.0f, (double)Width / (double)Height, 0.01, 100.0); gl.LookAt(0, 0, 3, 0, 0, 0, 0, 1, 0); gl.MatrixMode(OpenGL.GL_MODELVIEW); private void openGLControl_OpenGLDraw(object sender, PaintEventArgs e) OpenGL gl = openGLControl.OpenGL; gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT); gl.LoadIdentity(); gl.Translate(-1f, 0.0f, 0f); gl.Rotate(rotation, 1f, 0f, 0.0f); gl.DrawText3D("Arial", 32, 0, 0.3f, "Hello!"); rotation -= 3.0f; gl.DrawText(20, 20, 1, 1, 1, "Courier New", 12, "this is a test text."); gl.Flush(); void drawSphere(OpenGL gl,double radius,int segx,int segy,bool isLines) gl.PushMatrix(); gl.Translate(2f, 1f, 2f); var sphere = gl.NewQuadric(); if (isLines) gl.QuadricDrawStyle(sphere, OpenGL.GL_LINES); else gl.QuadricDrawStyle(sphere, OpenGL.GL_QUADS); gl.QuadricNormals(sphere, OpenGL.GLU_SMOOTH); gl.QuadricOrientation(sphere, (int)OpenGL.GLU_OUTSIDE); gl.QuadricTexture(sphere, (int)OpenGL.GLU_FALSE); gl.Sphere(sphere, radius, segx, segy); gl.DeleteQuadric(sphere); gl.PopMatrix();
以上是关于17事例十七:立体文字和平面文字的主要内容,如果未能解决你的问题,请参考以下文章