当前位置:网站首页>API learning of OpenGL (2001) gltexgen
API learning of OpenGL (2001) gltexgen
2022-07-06 10:36:00 【hankern】
Used to calculate texture coordinates .
opengl es 3.2 and opengl 4.5 This function is no longer supported , I don't know from which version it doesn't support .(This article describes legacy OpenGL APIs that have been removed from core OpenGL 3.1 and above (they are only deprecated in OpenGL 3.0). It is recommended that you not use this functionality in your programs. Consider using the OpenGL Shading Language instead. Mathematics of glTexGen - OpenGL Wikihttps://www.khronos.org/opengl/wiki/Mathematics_of_glTexGen)
void glTexGenf(GLenum coord, GLenum pname, GLfloat param);
void glTexGenfv(GLenum coord, GLenum pname, GLfloat *param); The first parameter specifies the texture axis , It can be GL_S,GL_T,GL_R or GL_Q. The second parameter must be GL_TEXTURE_SPHERE,GL_OBJECT_PLANE or GL_EYE_PLANE. The last parameter sets the method or mode of texture generation .glTexGen There are also corresponding GLint and GLdouble Pattern .
Parameters coord Must be GL_S、GL_T、GL_R or GL_Q
pname Parameter is GL_TEXTURE_GEN_MODE、GL_OBJECT_PLANE or GL_EYE_PLANE,
If it is GL_TEXTURE_GEN_MODE,param It's an integer , namely GL_OBJECT_PLANE,GL_EYE_PLANE,GL_SPHERE_MAP,GL_REFLECTION,GL_NORMAL_MAP One of ;
If pname Take other possible values ,param It's a pointer to an array .
GL_OBJECT_LINEAR
g = p1 xo + p2 yo + p3 zo + p4 wo
glTexGen(GL_S, GL_OBJECT_LINEAR, {ps0,ps1,ps2,ps3})
glTexGen(GL_T, GL_OBJECT_LINEAR, {pt0,pt1,pt2,pt3})
And the following are equivalent
vec4 sPlane = vec4(ps0,ps1,ps2,ps3);
vec4 tPlane = vec4(pt0,pt1,pt2,pt3);
kOutBaseTCoord.s = dot(vec4(POSITION, 1.0), sPlane);
kOutBaseTCoord.t = dot(vec4(POSITION, 1.0), tPlane);
GL_EYE_LINEAR
myEyePlane_S = VectorTimesMatrix(myPlane_S, InverseModelviewMatrix);
myEyePlane_T = VectorTimesMatrix(myPlane_T, InverseModelviewMatrix);
// Now that we have myEyePlane_S and myEyePlane_T...
for(i = 0; i < total; i++)
{
myEyeVertex = MatrixTimesVector(ModelviewMatrix, myVertex[i]);
myTexCoord[i].s = dot4D(myEyeVertex, myEyePlane_S);
myTexCoord[i].t = dot4D(myEyeVertex, myEyePlane_T);
}
GL_SPHERE_MAP
for(i = 0; i < total; i++)
{
myEyeVertex = MatrixTimesVector(ModelviewMatrix, myVertex[i]);
myEyeVertex = Normalize(myEyeVertex);
myEyeNormal = VectorTimesMatrix(myNormal[i], InverseModelviewMatrix);
reflectionVector = myEyeVertex - myEyeNormal * 2.0 * dot3D(myEyeVertex, myEyeNormal);
reflectionVector.z += 1.0;
m = 1.0 / (2.0 * sqrt(dot3D(reflectionVector, reflectionVector)));
// I am emphasizing that we write to s and t. Used to sample a 2D texture.
myTexCoord[i].s = reflectionVector.x * m + 0.5;
myTexCoord[i].t = reflectionVector.y * m + 0.5;
}
GL_REFLECTION_MAP
for(i = 0; i < total; i++)
{
myEyeVertex = MatrixTimesVector(ModelviewMatrix, myVertex[i]);
myEyeVertex = Normalize(myEyeVertex);
myEyeNormal = VectorTimesMatrix(myNormal[i], InverseModelviewMatrix);
dotResult = 2.0 * dot3D(myEyeVertex, myEyeNormal);
// I am emphasizing that we write to s and t and r. Used to sample a cubemap.
myTexCoord[i].s = myEyeVertex.x - myEyeNormal.x * dotResult;
myTexCoord[i].t = myEyeVertex.y - myEyeNormal.y * dotResult;
myTexCoord[i].r = myEyeVertex.z - myEyeNormal.z * dotResult;
}
边栏推荐
- MySQL27-索引優化與查詢優化
- Transactions have four characteristics?
- Adaptive Bezier curve network for real-time end-to-end text recognition
- Typescript入门教程(B站黑马程序员)
- MySQL combat optimization expert 09 production experience: how to deploy a monitoring system for a database in a production environment?
- MySQL28-数据库的设计规范
- MySQL实战优化高手05 生产经验:真实生产环境下的数据库机器配置如何规划?
- Redis集群方案应该怎么做?都有哪些方案?
- MySQL combat optimization expert 04 uses the execution process of update statements in the InnoDB storage engine to talk about what binlog is?
- The governor of New Jersey signed seven bills to improve gun safety
猜你喜欢

Mysql34 other database logs

Adaptive Bezier curve network for real-time end-to-end text recognition

Mysql26 use of performance analysis tools

Nanny hand-in-hand teaches you to write Gobang in C language

What should the redis cluster solution do? What are the plans?

Implement context manager through with
![13 medical registration system_ [wechat login]](/img/c9/05ad1fc86e02cf51a37c9331938b0a.jpg)
13 medical registration system_ [wechat login]

MySQL28-数据库的设计规范

ZABBIX introduction and installation

Solve the problem of remote connection to MySQL under Linux in Windows
随机推荐
MySQL實戰優化高手04 借著更新語句在InnoDB存儲引擎中的執行流程,聊聊binlog是什麼?
MySQL Real Time Optimization Master 04 discute de ce qu'est binlog en mettant à jour le processus d'exécution des déclarations dans le moteur de stockage InnoDB.
A necessary soft skill for Software Test Engineers: structured thinking
Texttext data enhancement method data argument
Emotional classification of 1.6 million comments on LSTM based on pytoch
MySQL22-逻辑架构
MySQL36-数据库备份与恢复
Ueeditor internationalization configuration, supporting Chinese and English switching
Unicode decodeerror: 'UTF-8' codec can't decode byte 0xd0 in position 0 successfully resolved
MySQL combat optimization expert 03 uses a data update process to preliminarily understand the architecture design of InnoDB storage engine
Super detailed steps for pushing wechat official account H5 messages
Adaptive Bezier curve network for real-time end-to-end text recognition
MySQL实战优化高手08 生产经验:在数据库的压测过程中,如何360度无死角观察机器性能?
[paper reading notes] - cryptographic analysis of short RSA secret exponents
Pytorch RNN actual combat case_ MNIST handwriting font recognition
[paper reading notes] - cryptographic analysis of short RSA secret exponents
Isn't there anyone who doesn't know how to write mine sweeping games in C language
MySQL的存储引擎
Nanny hand-in-hand teaches you to write Gobang in C language
Vscode common instructions