zoukankan      html  css  js  c++  java
  • 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();
    }
  • 相关阅读:
    HihoCoder1105 题外话·堆(基础二叉搜索树)
    HihoCoder1080 更为复杂的买卖房屋姿势(线段树+多重lazy)
    HihoCoder1078线段树的区间修改(线段树+lazy)
    HihoCoder1070 区间最小值(简单线段树)
    HDU3577Fast Arrangement(线段树+lazy)
    POJ2985 The k-th Largest Group (并查集+treap)
    HihoCoder1337 动态第k大(treap)
    STL的erase函数和lower_bound
    HihoCoder1329 平衡树·Splay(附STL版)
    etcd 在超大规模数据场景下的性能优化
  • 原文地址:https://www.cnblogs.com/lotuses/p/11360343.html
Copyright © 2011-2022 走看看