最近使用VB.NET完成了一项和OpenGL相关的项目,OpenGL是其中实现该软件的核心功能,软件中需要使用一个根据用户的不同需求实时改变已绑定的贴图图片功能,主要是字体颜色的变化。因为刚刚涉及OpenGL的编程,很多东西不懂,这里写出的方法也有可能是愚蠢、曲折的。
在创建OpenGL窗口过程中,借鉴了Nehe教程,初始化窗口的时候创建纹理,因为程序里面需要处理很多图片,所以装载的速度比较慢,我们需要更改字体颜色的图片也在这个过程中同时创建,初步估计,在我的机器上使用了5秒左右。
改变字体颜色,就需要对这个纹理进行处理,纹理的原始内容是从System.Drawing.BitMap创建过来的。我在使用glGenTexture和glBindTexture之后,进行了一些OpenGL纹理的参数设置,似乎这个BitMap就不能正常访问了,可能是里面的内容已经被OpenGL修改了。本来是想对这个原始的BitMap重新处理的,但是由于不能访问,我一时不知所措。
冷静下来之后,决定将这个BitMap重新创建,然后讲纹理重新绑定,理论上是可行的。试验了一下,果然成功。步骤如下:
'
创建BitMap
textureImage( 2 ) = CreateMyBitMap(...)
' 重新绑定纹理
Gl.glBindTexture( 3 , textureImage( 2 ))
' 下面的代码进行OpenGL纹理参数设置。
Gl....
textureImage( 2 ) = CreateMyBitMap(...)
' 重新绑定纹理
Gl.glBindTexture( 3 , textureImage( 2 ))
' 下面的代码进行OpenGL纹理参数设置。
Gl....