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事例十七:立体文字和平面文字的主要内容,如果未能解决你的问题,请参考以下文章

CSS3立体文字最佳实践

canvas一周一练 -- canvas绘制立体文字

MATLAB 制作抖音同款 立体人物文字海报

小技巧大用处-炫彩3D立体文字效果

用PS设计一个简单的立体字

零元学Expression Design 4 - Chapter 6 教你如何在5分钟内做出文字立体感效果