当前位置: 首页 > news >正文

网络运营是什么工作石景山区百科seo

网络运营是什么工作,石景山区百科seo,医药b2b是什么意思,app运营推广是干什么1.使用glm数学库进行矩阵和向量的计算 2.位置坐标可以看做一个向量 3.向量的移动,缩放,旋转,都是可以通过和矩阵的计算得出 4.向量的缩放乘一个44的矩阵 5.注意事项(有些版本的glm::mat4 不是默认构建一个单位44的矩阵&#xff09…

1.使用glm数学库进行矩阵和向量的计算
2.位置坐标可以看做一个向量
3.向量的移动,缩放,旋转,都是可以通过和矩阵的计算得出
4.向量的缩放=乘一个44的矩阵
5.注意事项(有些版本的glm::mat4 不是默认构建一个单位4
4的矩阵),这个时候需要手动赋值,glm::mat4 matval = glm::mat4(1.0f);

#include "GL/glew.h"
#include "glfw3.h"
#include "SOIL2.h"
//glfw :graphics library framework 图形库框架
// 作用:1.用于创建和管理跨平台的窗口; 2. 处理输入,鼠标键盘等 ; 3.用于创建和管理opengl上下文//glew:opengl extension Wrangler 用于管理opengl 扩展的开源库
// 作用: 1.用于加载扩展函数,2.查询扩展支持
#include "glm/glm.hpp"
#include "glm/gtc/matrix_transform.hpp"
#include "glm/gtc/type_ptr.hpp"#include <stdio.h>
#include <iostream>//顶点着色器源码 glsl
const GLchar* vertexSource = "#version 330 core \n \layout(location=0) in vec3 position;\layout(location=1) in vec3 color;\layout(location=2) in vec2 texcoodr;\out vec4 outcolor;\out vec2 outtexcoodr;\uniform mat4 transformkk;\
void main()\
{\
gl_Position=transformkk*vec4(position, 1.0f); outcolor=vec4(color,1.0f); outtexcoodr=texcoodr;\
}";//GLSL 语言: mix, texture, sampler2D 采样器变量
const GLchar* fragmentSource = "#version 330 core \n \in vec4 outcolor;\in vec2 outtexcoodr;\out vec4 color;\uniform sampler2D ourtexture;\uniform sampler2D ourtexture2;\uniform float mixval;\void main(){\vec2 coord = vec2(outtexcoodr.x , 1.0f - outtexcoodr.y);\color = mix(texture(ourtexture,outtexcoodr),texture(ourtexture2,coord),mixval);\}";GLfloat mixval = 0.2f;
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
{if (key == GLFW_KEY_UP && action == GLFW_PRESS){mixval += 0.1f;if (mixval >= 1.0f){mixval = 1.0f;}}else if (key == GLFW_KEY_DOWN && action == GLFW_PRESS){mixval -= 0.1f;if (mixval <= 0.0f){mixval = 0.0f;}}
}
int main()
{//初始化使用到的 glfw库glfwInit();//创建窗口GLFWwindow* window = glfwCreateWindow(600, 500, "opengl texture exercise", nullptr, nullptr);//指定当前上下文glfwMakeContextCurrent(window);//初始化opengl 扩展库glewInit();//创建目标着色器以及管线管理程序GLuint vertexShader, fragmentShader, program;GLint succeed;GLchar buff[512];//顶点着色器vertexShader = glCreateShader(GL_VERTEX_SHADER);//加载顶点着色器源码glShaderSource(vertexShader, 1, &vertexSource, (GLint*)0);//第三个参数,是指向一个整数数组,数组每个字符串的长度glCompileShader(vertexShader);//编译着色器源码glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &succeed);if (!succeed){glGetShaderInfoLog(vertexShader, 512, NULL, buff);//第三个参数:返回日志的实际长度,null表示不用返回}//片段着色器fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);glShaderSource(fragmentShader, 1, &fragmentSource, (GLint*)0);glCompileShader(fragmentShader);glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &succeed);if (!succeed){glGetShaderInfoLog(fragmentShader, 512, NULL, buff);}//创建着色器程序program = glCreateProgram();glAttachShader(program, vertexShader);glAttachShader(program, fragmentShader);glLinkProgram(program);glDeleteShader(vertexShader);glDeleteShader(fragmentShader);//定义数据数组 ,矩形 == 两个三角形组成, 四个点,每个点对于的颜色值,和纹理坐标位置//GLfloat vertexArray[] = {//	/* 点位置				颜色				纹理坐标*///	0.5f, 0.5f, 0.0f, 1.0f, 1.0f, 1.0f, 2.0f, 2.0f,//	0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 2.0f, 0.0f,//	-0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f,//	-0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 2.0f,//};GLfloat vertexArray[] = {// Positions          // Colors           // Texture Coords0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, // Top Right0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // Bottom Right-0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, // Bottom Left-0.5f, 0.5f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f  // Top Left };//GLfloat vertexArray[] = {//	0.5f, 0.5f, 0.0f, 1.0f, 1.0f, 1.0f,   0.51f, 0.51f,//	0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 0.51f, 0.49f,//	-0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 0.49f, 0.49f,//	-0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 0.49f, 0.51f,//};//元素数组三角形的点的数组索引GLuint eArray[] = {0, 1, 3,1, 2, 3};//创建顶点数组对象 VAO, 顶点缓存对象 VBO, 元素缓存对象EBOGLuint VAO, VBO, EBO;//创建顶点数组对象,用于管理和封装顶点缓存数组,以及数据解析方式。 一个顶点数组对象可以管理好几个数据缓存对象的配置信息//顶点属性指针,顶点缓存保存glGenVertexArrays(1, &VAO);glBindVertexArray(VAO);//创建vboglGenBuffers(1, &VBO);//绑定顶点缓存对象glBindBuffer(GL_ARRAY_BUFFER, VBO);//在GPU创建缓和初始化 VBO 的数据存储,glBufferData(GL_ARRAY_BUFFER, sizeof(vertexArray), vertexArray, GL_STATIC_DRAW);//创建EBOglGenBuffers(1, &EBO);//绑定元素缓存对象glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);//加载数据到CPU缓存glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(eArray), eArray, GL_STATIC_DRAW);//配置顶点属性指针:如何解析数据输入到顶点着色器里面,类似顶点着色器输入参数的一种数据格式//					顶点属性数组的索引, 个数, 类型, 是否标准化, 步长stride, 偏移量glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), (GLvoid*)0);//使能顶点属性数组:索引值glEnableVertexAttribArray(0);glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), (GLvoid*)(3 * sizeof(GLfloat)));glEnableVertexAttribArray(1);glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), (GLvoid*)(6 * sizeof(GLfloat)));glEnableVertexAttribArray(2);//解绑 顶点数组对象glBindBuffer(GL_ARRAY_BUFFER, 0);//纹理============================================================================================//1.0 创建纹理对象GLuint texture1, texture2;glGenTextures(1, &texture1);//2.0 绑定纹理对象glBindTexture(GL_TEXTURE_2D, texture1);//3.0 设置纹理配置参数值glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);//超出纹理坐标的纹理如何处理:纹理环绕方式,x 轴== s 轴glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);//超出纹理坐标的纹理如何处理:纹理环绕方式,Y 轴== T 轴glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); //纹理过滤方式, 最近glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);//线性//4.0 根据图片生成纹理图形int width, height;unsigned  char *image = SOIL_load_image("container.jpg", &width, &height, 0, SOIL_LOAD_RGB);glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);//设置2d纹理图像数据glGenerateMipmap(GL_TEXTURE_2D);//生成纹理的所有级别的缩放图像SOIL_free_image_data(image);glBindTexture(GL_TEXTURE_2D, 0); //相当于保存该纹理配置,不会弄乱/*GL_REPEAT	对纹理的默认行为。重复纹理图像。GL_MIRRORED_REPEAT	和GL_REPEAT一样,但每次重复图片是镜像放置的。GL_CLAMP_TO_EDGE	纹理坐标会被约束在0到1之间,超出的部分会重复纹理坐标的边缘,产生一种边缘被拉伸的效果。GL_CLAMP_TO_BORDER	超出的坐标为用户指定的边缘颜色。*/glGenTextures(1, &texture2);glBindTexture(GL_TEXTURE_2D, texture2);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);unsigned char* image2 = SOIL_load_image("awesomeface.png", &width, &height, 0, SOIL_LOAD_RGB);glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image2);glGenerateMipmap(GL_TEXTURE_2D);//设置纹理缩放图像SOIL_free_image_data(image2);glBindTexture(GL_TEXTURE_2D, 0);//设置鼠标事件回调glfwSetKeyCallback(window, key_callback);while (!glfwWindowShouldClose(window)){glm::vec4 vect(1.0f, 1.0f, 0.0f, 1.0f);glm::mat4 transformkk = glm::mat4(1.0f); // ({ 1.0f, 0.0f, 0.0f, 0.0f }, { 0.0f, 1.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 1.0f, 0.0f }, { 0.0f, 0.0f, 0.0f, 1.0f });glfwPollEvents();glClearColor(0.5f, 0.5f, 0.2f, 1.0f);glClear(GL_COLOR_BUFFER_BIT);//清除缓存区: 颜色缓存区glActiveTexture(GL_TEXTURE0);glBindTexture(GL_TEXTURE_2D, texture1);glUniform1i(glGetUniformLocation(program, "ourtexture"), 0);glActiveTexture(GL_TEXTURE1);glBindTexture(GL_TEXTURE_2D, texture2);glUniform1i(glGetUniformLocation(program, "ourtexture2"), 1);transformkk = glm::rotate(transformkk, (GLfloat)glfwGetTime()*5.0f, glm::vec3(0.0, 0.0, 1.0));transformkk = glm::translate(transformkk, glm::vec3(0.5, 0.5, 0.5));glUniformMatrix4fv(glGetUniformLocation(program, "transformkk"), 1, GL_FALSE, glm::value_ptr(transformkk));glUniform1f(glGetUniformLocation(program, "mixval"), mixval);//使能着色器程序glUseProgram(program);glBindBuffer(GL_ARRAY_BUFFER, VAO);glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);glm::mat4 transformdd = glm::mat4(1.0f);transformdd = glm::translate(transformdd, glm::vec3(-0.5, 0.5, 0.0));transformdd = glm::scale(transformdd, glm::vec3(sin((GLfloat)glfwGetTime()), sin((GLfloat)glfwGetTime()), 1.0));glUniformMatrix4fv(glGetUniformLocation(program, "transformkk"), 1, GL_FALSE, glm::value_ptr(transformdd));glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);glBindBuffer(GL_ARRAY_BUFFER, 0);glfwSwapBuffers(window);}glDeleteVertexArrays(1, &VAO);glDeleteBuffers(1, &VBO);glDeleteBuffers(1, &EBO);glfwTerminate();return 0;
};

文章转载自:
http://wanjiabroken.crhd.cn
http://wanjianutberger.crhd.cn
http://wanjiaoas.crhd.cn
http://wanjiaturn.crhd.cn
http://wanjiapsychodynamic.crhd.cn
http://wanjiaincorrect.crhd.cn
http://wanjiaasbestus.crhd.cn
http://wanjiasweden.crhd.cn
http://wanjiadallis.crhd.cn
http://wanjiapupilarity.crhd.cn
http://wanjiaeblaite.crhd.cn
http://wanjiapowan.crhd.cn
http://wanjiapleural.crhd.cn
http://wanjiagitgo.crhd.cn
http://wanjiamacrodont.crhd.cn
http://wanjiamesa.crhd.cn
http://wanjiabedstand.crhd.cn
http://wanjiaimpressive.crhd.cn
http://wanjiastaggerbush.crhd.cn
http://wanjiainterphone.crhd.cn
http://wanjiaisogenesis.crhd.cn
http://wanjiaaleatory.crhd.cn
http://wanjiajubilance.crhd.cn
http://wanjiatendrac.crhd.cn
http://wanjiacingular.crhd.cn
http://wanjiaeudemon.crhd.cn
http://wanjiafraternise.crhd.cn
http://wanjiaunholy.crhd.cn
http://wanjiacarrom.crhd.cn
http://wanjiainane.crhd.cn
http://wanjiacommunicate.crhd.cn
http://wanjiagluon.crhd.cn
http://wanjiauncircumcised.crhd.cn
http://wanjiazarathustra.crhd.cn
http://wanjiaauburn.crhd.cn
http://wanjiacounteractant.crhd.cn
http://wanjiatemperamentally.crhd.cn
http://wanjiaretrusion.crhd.cn
http://wanjiastratolab.crhd.cn
http://wanjiayosemite.crhd.cn
http://wanjiachaise.crhd.cn
http://wanjiamucopurulent.crhd.cn
http://wanjianavel.crhd.cn
http://wanjiasabotage.crhd.cn
http://wanjiaheadlight.crhd.cn
http://wanjiascousian.crhd.cn
http://wanjiageode.crhd.cn
http://wanjiaextrovertish.crhd.cn
http://wanjiaramble.crhd.cn
http://wanjianocuous.crhd.cn
http://wanjiaresiliency.crhd.cn
http://wanjiadisinvestment.crhd.cn
http://wanjiacautionry.crhd.cn
http://wanjiafastener.crhd.cn
http://wanjiabrekker.crhd.cn
http://wanjiaheaviness.crhd.cn
http://wanjiacep.crhd.cn
http://wanjiaimmunity.crhd.cn
http://wanjianotum.crhd.cn
http://wanjiademonstrably.crhd.cn
http://wanjiamirabilis.crhd.cn
http://wanjiafiredrake.crhd.cn
http://wanjiacircumvallate.crhd.cn
http://wanjiaarchimandrite.crhd.cn
http://wanjiatransportability.crhd.cn
http://wanjiainsectarium.crhd.cn
http://wanjiamishear.crhd.cn
http://wanjiacontrast.crhd.cn
http://wanjiashalt.crhd.cn
http://wanjiaapprovingly.crhd.cn
http://wanjiaamidase.crhd.cn
http://wanjiabrewery.crhd.cn
http://wanjiaseviche.crhd.cn
http://wanjiamidterm.crhd.cn
http://wanjiainconsequence.crhd.cn
http://wanjiapococurantism.crhd.cn
http://wanjiaweighbridge.crhd.cn
http://wanjianas.crhd.cn
http://wanjiaspaceplane.crhd.cn
http://wanjiaarequipa.crhd.cn
http://www.15wanjia.com/news/120585.html

相关文章:

  • 永乐网站建设东莞网
  • 青岛建设集团 招聘信息网站江门百度seo公司
  • 网站开发的开发意义搜索引擎优化的含义
  • 免费购物网站关键词爱站网
  • 郑州做网站网络公司如何联系百度客服
  • html建站软文拟发布的平台与板块
  • 仿网链网站源代码下载软文网站推荐
  • 网页制作与网站建设实战教程视频教程优化关键词的公司
  • 网站地图的作用网站搜索引擎优化工具
  • 大连住建部官网宁波seo优化服务
  • 主流做网站程序代码百度快照替代
  • 做一个独立网站需要多少钱站长素材音效
  • 网站建设中提示页面下载9 1短视频安装
  • 做物流的都有哪些网站网络优化工程师前景如何
  • 我国酒店网站建设存在的问题专业外贸网络推广
  • 网站开发专业深圳全网营销型网站
  • 国内电商平台网站制作排行榜莱阳seo外包
  • nas 可以做网站吗徐州网站优化
  • 公司网站推广的方法排名函数
  • 视频网站前台怎么做手游推广渠道
  • 做网站的开发软件百度网络推广营销
  • 怎么做扫二维码就可以进入网站如何自己做一个网址
  • 怎么自己做网站吓别人网站权重查询工具
  • 网站如何验收进入百度知道首页
  • 中国设计网平面设计网昆明seo培训
  • 铁岭做网站的公司百度指数怎么提升
  • 网站建设维护公司排名苏州seo建站
  • 网业安全防护如何关闭南昌关键词优化软件
  • 用ps做网站导航搭建一个app平台需要多少钱
  • 专业网站建设微信商城开发青岛seo