实验2.1——彩色三角形的显示

learnopengl笔记——基础篇(3) 本次通过编写不同的GLSL程序来控制图形的颜色,可以通过属性指针glVertexAttribPointer绑定VBO的顶点,将顶点着色器和片段着色器链接起来,输出的图形就能展示出对应的颜色。 一个例子如下: #version 330 core顶点着色器 layout(location =0)in vec3 aPos;//位置 layout(location =1)in vec3 acolor;//颜色,由着色器外设置 out vec4 mycolor ;//该输出传给片段着色器 void main() 阅读详情

序 

查这段代码的时候:

无意中看到了一个这个链接:

(31条消息) 现代OpenGL学习笔记三:深入理解着色器_不想不努力的菜菜的博客-优快云博客

里面讲了如何绘制一个彩色的三角形,还演示了index=0,1两种情况下,VBO与shader怎么呼应的,绘制有颜色的图形,很常用,值得学习。

链接的学习

这部分内容,来自上面那个链接。

float vertices[] = {
    // 位置              // 颜色
     0.5f, -0.5f, 0.0f,  1.0f, 0.0f, 0.0f,   // 右下
    -0.5f, -0.5f, 0.0f,  0.0f, 1.0f, 0.0f,   // 左下
     0.0f,  0.5f, 0.0f,  0.0f, 0.0f, 1.0f    // 顶部
};
#version 330 core
layout (location = 0) in vec3 aPos;   // 位置变量的属性位置值为 0 
layout (location = 1) in vec3 aColor; // 颜色变量的属性位置值为 1
 
out vec3 ourColor; // 向片段着色器输出一个颜色
 
void main()
{
    gl_Position = vec4(aPos, 1.0);
    ourColor = aColor; // 将ourColor设置为我们从顶点数据那里得到的输入颜色
}

#version 330 core
out vec4 FragColor;  
in vec3 ourColor;
 
void main()
{
    FragColor = vec4(ourColor, 1.0);
}

 图画的挺漂亮的:

// 位置属性
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0);
// 颜色属性
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)(3* sizeof(float)));
glEnableVertexAttribArray(1);

明白了,去尝试自己写吧。 

尝试

作为一个小白,报错是常态,所以,不要有心理负担。

之前做到了这样:

第一次运行,是这样:

 

 改,在这一行里,少了个vec3,少了个;

 

坏消息是依旧报错,好消息是错少了

 这个const float,和这个有关系吗?

 实测,没关系……

经过重写对比,发现少了个“,”

这可能不是调试代码,这是比谁的眼更敏感……对我这种小白来说,太难搞了。。

正常了,这个就已经开始有点实用价值了

能正常运行出结果的完整代码

/***
 * 例程  绘制三角形 (MAKE后运行时可删除ALL_BUILD,也可以将Task-triangle设为默认启动工程)
 * 步骤:
 * 1-初始化:   GLFW窗口,GLAD。
 * 2-数据处理: 给定顶点数据,生成并绑定VAO&VBO(准备在GPU中进行处理),设置顶点属性指针(本质上就是告诉OpenGL如何处理数据)。
 * 3-着色器:   给出顶点和片段着色器,然后链接为着色器程序,渲染时使用着色器程序。
 * 4-渲染:     清空缓冲,绑定纹理,使用着色器程序,绘制三角形,交换缓冲区检查触发事件后释放资源
 */

#include <iostream>
#include "glad/glad.h"
#include "GLFW/glfw3.h"

 // 三角形的顶点数据
//const float triangle[] = {
//    //     ---- 位置 ----    
//         -0.5f, -0.5f, 0.0f,   // 左下
//          0.5f, -0.5f, 0.0f,   // 右下
//          0.0f,  0.5f, 0.0f    // 正上
//};
//
//const float triangle2[] = {
//    //     ---- 位置 ----    
//         0.6f, -0.5f, 0.0f,   // 左下
//          0.8f, -0.5f, 0.0f,   // 右下
//          0.7f,  0.5f, 0.0f    // 正上
//};

const float triangle[] = {
    // 位置              // 颜色
     0.5f, -0.5f, 0.0f,  1.0f, 0.0f, 0.0f,   // 右下
    -0.5f, -0.5f, 0.0f,  0.0f, 1.0f, 0.0f,   // 左下
     0.0f,  0.5f, 0.0f,  0.0f, 0.0f, 1.0f    // 顶部
};

const float triangle2[] = {
    // 位置              // 颜色
     0.6f, -0.5f, 0.0f,  1.0f, 0.0f, 0.0f,   // 右下
    0.8f, -0.5f, 0.0f,  0.0f, 1.0f, 0.0f,   // 左下
     0.7f,  0.5f, 0.0f,  0.0f, 0.0f, 1.0f    // 顶部
};

// 屏幕宽,高
int screen_width = 1280;
int screen_height = 720;

int main() {
    // 第一部分,初始化GLFW和GLAD,分为4个步骤进行/////////////////////////////////////////////////////////

    // 初始化GLFW
    glfwInit();                                                     // 初始化GLFW
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);                  // OpenGL版本为3.3,主次版本号均设为3
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);  // 使用核心模式(无需向后兼容性)
    //glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);            // 如果使用的是Mac OS X系统,需加上这行
    glfwWindowHint(GLFW_RESIZABLE, false);						    // 不可改变窗口大小

    // 创建窗口(宽、高、窗口名称)
    auto window = glfwCreateWindow(screen_width, screen_height, "Triangle", nullptr, nullptr);
    if (window == nullptr) {                                        // 如果窗口创建失败,输出Failed to Create OpenGL Context
        std::cout << "Failed to Create OpenGL Context" << std::endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);                                 // 将窗口的上下文设置为当前线程的主上下文

    // 初始化GLAD,加载OpenGL函数指针地址的函数
    // 在调用任何OpenGL函数之前
    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
    {
        std::cout << "Failed to initialize GLAD" << std::endl;
        return -1;
    }

    // 指定当前视口尺寸(前两个参数为左下角位置,后两个参数是渲染窗口宽、高)
    glViewport(0, 0, screen_width, screen_height);



    // 第二部分,数据处理,通过VAO,VBO,把顶点数据发送到显卡GPU上,并设置属性指针,告诉GPU如何解释这些数据/////////////////////////////////////////////////////////////

    // 生成并绑定VAO和VBO
    GLuint vertex_array_object; // == VAO   核心模式要求必须使用VAO
    glGenVertexArrays(1, &vertex_array_object);//先生成
    glBindVertexArray(vertex_array_object);//再绑定

    GLuint vertex_buffer_object[2]; // == VBO
    glGenBuffers(2, &vertex_buffer_object[0]);//先生成,相当于C里声明的指针

    glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer_object[0]);//绑定, 相当于声明指针指向的变量类型,同时设置一下状态机的状态(火车轨道变轨,变完了后面的车都得按变了的轨道走)
    glBufferData(GL_ARRAY_BUFFER, sizeof(triangle), triangle, GL_STATIC_DRAW);    // 将顶点数据绑定至当前默认的缓冲中
    //glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);    // 设置顶点属性指针——告知OpenGL,如何解释这些数据
    //glEnableVertexAttribArray(0);

    glBindBuffer(GL_ARRAY_BUFFER, 0);//解绑

    glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer_object[1]);//再绑定
    glBufferData(GL_ARRAY_BUFFER, sizeof(triangle2), triangle2, GL_STATIC_DRAW);    // 将顶点数据绑定至当前默认的缓冲中,可能是传数据到GPU吧
    //glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);    // 设置顶点属性指针——告知OpenGL,如何解释这些数据
    //glEnableVertexAttribArray(0);

    glBindBuffer(GL_ARRAY_BUFFER, 0);//再绑定

    // 解绑VAO和VBO    为了代码更规范
    glBindVertexArray(0);


    // 第三部分,着色器,用来处理GPU里的数据//////////////////////////////////////////////////////////////////////////

    // 顶点着色器和片段着色器源码【GLSL】
    const char* vertex_shader_source =
        "#version 330 core\n"
        "layout (location = 0) in vec3 aPos;\n"           // 位置变量的属性位置值为0
        "layout (location = 1) in vec3 aColor; \n "         //// 颜色变量的属性位置值为 1
        "out vec3 ourColor; \n"// 向片段着色器输出一个颜色
        "void main()\n"
        "{\n"
        "gl_Position = vec4(aPos, 1.0);\n" //内建变量
        "ourColor=aColor;\n"
        "}\n\0";
    const char* fragment_shader_source =
        "#version 330 core\n"
        "in vec3 ourColor;\n"
        "out vec4 FragColor;\n"                           // 输出的颜色向量
        "void main()\n"
        "{\n"
        "FragColor = vec4(ourColor, 1.0f);\n"
        "}\n\0";

    // 生成并编译着色器
        // 顶点着色器
    int vertex_shader = glCreateShader(GL_VERTEX_SHADER);
    glShaderSource(vertex_shader, 1, &vertex_shader_source, NULL);
    glCompileShader(vertex_shader);
    int success;
    char info_log[512];
    // 检查着色器是否成功编译,如果编译失败,打印错误信息
    glGetShaderiv(vertex_shader, GL_COMPILE_STATUS, &success);
    if (!success)
    {
        glGetShaderInfoLog(vertex_shader, 512, NULL, info_log);
        std::cout << "ERROR::SHADER::VERTEX::COMPILATION_FAILED\n" << info_log << std::endl;
    }
    // 片段着色器
    int fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);
    glShaderSource(fragment_shader, 1, &fragment_shader_source, NULL);
    glCompileShader(fragment_shader);
    // 检查着色器是否成功编译,如果编译失败,打印错误信息
    glGetShaderiv(fragment_shader, GL_COMPILE_STATUS, &success);
    if (!success)
    {
        glGetShaderInfoLog(fragment_shader, 512, NULL, info_log);
        std::cout << "ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n" << info_log << std::endl;
    }

    // 链接顶点和片段着色器至一个着色器程序
    int shader_program = glCreateProgram();
    glAttachShader(shader_program, vertex_shader);
    glAttachShader(shader_program, fragment_shader);
    glLinkProgram(shader_program);
    // 检查着色器是否成功链接,如果链接失败,打印错误信息
    glGetProgramiv(shader_program, GL_LINK_STATUS, &success);
    if (!success) {
        glGetProgramInfoLog(shader_program, 512, NULL, info_log);
        std::cout << "ERROR::SHADER::PROGRAM::LINKING_FAILED\n" << info_log << std::endl;
    }

    // 删除着色器    需要的着色器程序已经拿到了,这个没用了,就删除了
    glDeleteShader(vertex_shader);
    glDeleteShader(fragment_shader);

    // 线框模式
    //glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

    // 第4部分,渲染//////////////////////////////////////////////////////////////////////////

    // 渲染循环
    while (!glfwWindowShouldClose(window)) {

        // 清空颜色缓冲
        glClearColor(0.0f, 0.34f, 0.57f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);
        // 使用着色器程序  【之前链接好的那个】
        glUseProgram(shader_program);

        // 绘制三角形
        glBindVertexArray(vertex_array_object);                                    // 绑定VAO

        glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer_object[0]);
        glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0);    // 设置指针位置,以便后续从此处读取数据进行渲染
        glEnableVertexAttribArray(0);
        glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)(3*sizeof(float)));    // 设置指针位置,以便后续从此处读取数据进行渲染
        glEnableVertexAttribArray(1);
        glDrawArrays(GL_TRIANGLES, 0, 3);                                          // 绘制三角形

        glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer_object[1]);
        glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0);    // 【渲染时告诉OpenGL如何解释这些数据】
        glEnableVertexAttribArray(0);
        glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)(3 * sizeof(float)));    // 【渲染时告诉OpenGL如何解释这些数据】
        glEnableVertexAttribArray(1);
        glDrawArrays(GL_TRIANGLES, 0, 3);                                          // 绘制三角形


        glBindVertexArray(0);                                                      // 解除绑定

        // 交换缓冲并且检查是否有触发事件(比如键盘输入、鼠标移动等)
        glfwSwapBuffers(window);//双缓冲
        glfwPollEvents();
    }

    // 第五部分,善后工作

    // 删除VAO和VBO
    glDeleteVertexArrays(1, &vertex_array_object);
    glDeleteBuffers(1, &vertex_buffer_object[0]);

    // 清理所有的资源并正确退出程序
    glfwTerminate();
    return 0;
}

后记

那末,如果这个顶点数据,是可变的,应该咋写?

和STATIC_DRAW有关吗?

有关,但是没有想象里的关联那么大

 引用:

(31条消息) STATIC_DRAW, DYNAMIC_DRAW, STREAM_DRAW的区别_me_badman的博客-优快云博客

 

以后再说吧,暂时用不到。

小白而已,不能一次要求的太多…… 

Processing例子:点与彩色三角形 首先声明,这是我在iprocessing.cn看到的例子,转过来不是商业目的,只是自己学习做个记录,如果有侵权什么的,可以联系我,我会删掉~ 然后,上效果图!!   这个例子就是先生成一大堆的点对象,有位置、速率、颜色的属性,然后有个初始距离,任意三个点,两两之间的距离都小于这个初始距离,那就把三角形画出来,填充颜色,如果不满足条件,那就是一个孤立的点。大概就是这样,代码也不难读,一百行... 阅读详情

相关推荐

绘制彩色三角形

#include void Initial(void){    glClearColor(0.0,0.0,0.0,0.0);}void myDisplay(){    glClear(GL_COLOR_BUFFER_BIT);    glBegin(GL_TRIANGLES);//glBegin和glEnd是一一对应的。这两个函数限制了一组或多组图元的顶点定

hit15105的专栏 733

【OpenGL 学习笔记】第 4 篇:绘制四边形

(0)选择x64平台 (1)添加链接打开项目属性打开项目目录添加文件路径:包含目录添加:D:\OpenGL_Link\Includes;库目录添加:D:\OpenGL_Link\Libs; 打开链接器/输入添加: 在项目源文件夹下添加glad.c文件 新建main.cpp文件,测试代码,没问题即可。 输出结果 包括:初始化GLFW、创建窗口、初始化GLAD、创建视口 2、顶点输入 3、数据处理 (1)VBO 我们有了顶点数据,接下来就是将这些顶点数据发送到GPU中去处理,这里我们

有朋自远方来,不亦乐乎。 1962

用webgl绘制一个彩色旋转立方体

用webgl绘制一个彩色旋转立方体今天给大家分享一个用webgl写的简单的三维场景:转动的交互式彩色立方体,其六个面的颜色都不一样。 上次绘制二维彩色矩形时讲到,二维是三维场景的特殊情况,所以由二维向三维拓展也并不难,webgl里面提供了画三角形的方法,立方体有6个面,一个面由两个三角形组成,共计需要12个三角形,每个三角形又有3个顶点,故绘制立方体需要36个点,而实际上立方体只有8个顶点,这8

Bruce_wjh的博客 6588

【OpenGL学习笔记七】着色器语言(GLSL)

GLSL是类C语言 典型着色器结构 开头总是版本声明 使用in关键字定义输入变量 定义out关键字定义输出变量 定义uniform main函数 #version version_number in type in_variable_name; in type in_variable_name; out type out_variable_name; uniform type uniform_name; int main() { // 处理输入并进行一些图形操作 ... //

briant_ccj的专栏 4117

Qt OpenGL(二十四)——Qt OpenGL 核心模式-实现彩色三角形

要注意的是由于我们知道这个数组是紧密排列的(在两个顶点属性之间没有空隙)我们也可以设置为0来让OpenGL决定具体步长是多少(只有当数值是紧密排列时才可用)。一旦我们有更多的顶点属性,我们就必须更小心地定义每个顶点属性之间的间隔,我们在后面会看到更多的例子(译注: 这个参数的意思简单说就是从这个属性第二次出现的地方到整个数组0位置之间有多少字节)。中,看到了Qt关于OpenGL的例程,是一个旋转的彩色三角形,本篇文章我们就使用OpenGL核心模式,实现这个彩色三角形。和图1动态图的颜色基本是一样的。

ifeng12358的博客 1331

使用OpenGL绘制彩色三角形

在OpenGL中,我们可以通过设置颜色属性来给我们的图形上色。本文将介绍如何使用OpenGL绘制彩色三角形,并提供相应的源代码。我希望这篇文章能够帮助您了解如何使用OpenGL绘制彩色三角形,并促进您对OpenGL的理解和实践。首先,让我们创建一个简单的OpenGL窗口并设置视口的大小和位置。在上述代码中,我们定义了一个绘制三角形的函数,并使用。函数设置每个点的颜色属性。如果您想更改三角形的颜色,只需修改。使用OpenGL绘制彩色三角形。函数将绘制的结果显示在屏幕上。来标记三角形的顶点。

TechBurst的博客 367

OpenGL学习随笔(五)——2022.2.7

通过前面的学习,已经了解了OpenGL渲染的主要流程和基础的数学知识,接下来继续学习如何管理3D图形数据,在本回中将会绘制一个立方体。

weixin_59876363的博客 1780

炫酷彩色三角形图案Canvas动态特效实战

htmltable {th, td {th {pre {简介:HTML5 Canvas是Web前端实现动态图形绘制的强大工具,本“彩色三角形图案Canvas特效”项目聚焦于利用Canvas API创建具有立体感和鼠标交互功能的动态三角形背景。通过JavaScript控制绘图上下文,结合路径绘制、颜色渐变、随机色彩生成、鼠标事件监听及动画优化技术,实现用户移动鼠标时实时生成彩色三角形并持续动画更新的视觉效果。

weixin_42103128的博客 883

Location理解

layout(location)理解

weixin_41377572的博客 815

腾讯文档API逆向分析:不用Selenium也能批量导出的黑科技

本文揭秘了如何通过Python逆向分析腾讯文档的隐藏API,实现无需Selenium即可批量导出在线表格的高效方法。详细解析了API调用流程、Cookie维护及异常处理技巧,相比传统方案性能提升显著,适用于大量文档导出的自动化场景。

h9j8k7l6m5n的博客 1201

使用Termux在Android设备上编译运行SpecCPU2006

SPEC2006搭配Termux,竟然还能这么玩?!

菜菜的菜园子 2960

C++ OpenGL学习笔记(3、绘制彩色三角形、绘制彩色矩形)

可是新的问题来了,一个三角形中有三个顶点数据,两个三角形有多少个顶点数据,6个?在上个章节中,单个颜色的三角形绘制成功了,甚至随着时间变化颜色也随着变化的三角也绘制成功了,那么我想在不同的角点设置不同的颜色值,中间内插出来,输出的三角形就是彩色的了,这个彩色三角形怎么绘制呢,通过我的学习,绘制出来了。要实现这种效果,我们在输入顶点数据的时候,就将颜色信息与顶点数据进行绑定,解析完顶点数据后就解析颜色数据,最后将颜色数据通过管线自动传到下一步进行影像绘制即可。1、定义带颜色信息的顶点,定义四个顶点;

静以修身,简以养德 759

AI开发助手介绍

AI开发助手介绍随着NLP方向发展越来越成熟,AI写代码领域出现了几个非常好的模型,今天笔者给大家推荐几个AI Coding 助手AI Coding助手是以IDEA插件或vim插件形式提供服务,在编辑器中写代码时,可以实时预测下一行要输入的代码,提升开发效率。Github Copilot首先要介绍的是Github Copilot,Copilot是个AI Coding助手,它从注释和代码中提取上下文,给出单行和整个函数的代码建议,Copilot由Open AI 的CodeX模型提供支持,它是一个由OpenAI

bobo_simpler的博客 5765

android平台下OpenGL ES 3.0绘制彩色三角形

本例基于android平台下OpenGLES3.0绘制圆点、直线和三角形 目录 顶点着色器 片段着色器 颜色配置 基于sdk绘制彩色三角形 基于ndk绘制彩色三角形 顶点着色器 #version 300 es layout (location = 0) in vec4 vPosition; layout (location = 1) in vec4 aColor; out vec4 vColo...

handy周 3529

IO多路转接 ——— select、poll、epoll

select是系统提供的一个多路转接接口。select函数的函数原型如下: 参数说明:参数timeout的取值:返回值说明:select调用失败时,错误码可能被设置为:fd_set结构与sigset_t结构类似,fd_set本质也是一个位图,用位图中对应的位来表示要监视的文件描述符。 调用select函数之前就需要用fd_set结构定义出对应的文件描述符集,然后将需要监视的文件描述符添加到文件描述符集当中,这个添加的过程本质就是在进行位操作,但是这个位操作不需要用户自己进行,系统提供了一组专门的接口,用

2021dragon的博客 7974

VerilogEval实战指南:从基准测试到模型微调的全流程解析

本文提供了VerilogEval实战指南,详细解析了从基准测试到模型微调的全流程。VerilogEval是一个自动化、标准化的测试框架,用于客观评估大语言模型生成Verilog硬件代码的能力。文章涵盖了环境搭建、核心机制解析、利用其生成合成数据进行模型微调的策略,以及如何将其工程化集成到自动化评估流程中,为硬件设计领域的AI应用提供了完整的方法论。

yy01234的博客 1005

WebGL系列教程四(绘制彩色三角形)

WebGL中的varying变量负责将值从顶点着色器传递到片元着色器中。假设我们有个三角形,没错,还是前两篇使用的那个三角形,它的颜色如下图所示:现在我们要给这个三角形着色,我们只需要把这个顶点的颜色从顶点着色器中传递到片元着色器中,WebGL就会自动帮我们把三角形中间的颜色给插值出来。本篇我们通过指定三角形的三个顶点的颜色,绘制出了一个彩色的三角形,并梳理了整个程序的流程,了解了varying变量的内涵,这对我们理解后续的知识很重要,希望读者仔细揣摩,下期见。

AIGIS的博客 1381

避坑指南:RK3576+Android14适配移远5G模组(RG200U)时,我遇到的3个‘巨坑’及解决方案

本文详细记录了RK3576芯片适配Android14系统与移远RG200U 5G模组过程中遇到的三大技术难题:RIL服务启动失败、HIDL兼容性矩阵配置错误及ttyUSB权限冲突。通过实战案例提供了动态库拷贝、HIDL版本链声明和SELinux策略调整等解决方案,帮助开发者高效完成5G模组集成,特别适用于基于kernel6.1的嵌入式开发场景。

weixin_30664051的博客 389

【OpenGL ES】绘制彩色三角形

1 前言 【OpenGL ES】绘制三角形中介绍了绘制普通三角形的方法,本文将绘制彩色三角形的方法。 项目目录如下: 2 案例 MainActivity.java package com.zhyan8.triangle; import android.opengl.GLSurfaceView; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity...

little_fat_sheep 1158

【Linux系统】Kdenlive软件多机位同音频视频同步化处理

Kdenlive简介 官网链接:https://kdenlive.org/zh/ 命令行安装: apt-get install kdenlive Kdenlive能够进行多轨道视频编辑,可以使用和调整多条音频、视频轨道。每条轨道可以按需进行单独锁定、静音。 Kdenlive多机位同音频视频同步化处理步骤 1. 新建Kdenlive文件 选择<文件>-<新建>,建立新的kdenlive文件,初始设置为<视频轨:2>,<音频轨:2>。 视.

qq_31550269的博客 1884

数据权限设计

随着IT新技术不断完善成熟,企业数字化建设得到全面的发展,数据将成为一个创造财富的重要来源,并且越来越多地被视为一项值得重视的企业资产。未来,很多企业之间的竞争,其实也是资源和数据竞争。那么针对数据资产,如何保障它的安全性呢?数据的权限管理无疑是必不可少的。数据权限从数据源来控制不同的用户能够查看、使用和授权不同的数据表数据(其实就是数据表行列的管控),就如同筑起了一道道护城墙,为数据安全提供了保障。

qq_40664711的博客 1万+

Qt5+OpenGL 实现彩色正方体显示、缩放、旋转和拖拽平移

随手记录Qt学习开发过程中遇到的问题和解决方法 环境:Qt5.12.9 考虑采用OpenGL固定管线绘制图像效率低下,一直想学习采用OpenGL ES2.0的方式进行图像绘制,网上基本这方面的可参考资料不够丰富, 自己OpenGL的基础又十分欠缺,完全是在一步步自己摸索着学习的。建议跟我一样对OpenGL本身基础就差的同志们,先到https://learnopengl-cn.github.io/这个网站上自学一下,尤其是从“入门-》你好,三角形”这部分开始,讲得真的非常清楚,一定要耐心学习。 不废话了,下面

weixin_43493507的博客 5807

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

OpenGL教程 | 2.了解着色器,并绘制彩色三角形

了解着色器,并绘制彩色三角形

kevin200606的博客 502

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

WEBGL看完你就会了(14)---绘制彩色三角形

WebGL顶点属性缓存与彩色图形绘制

简单Cere 1576

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

OpenGL实验(一)彩色五角星绘制

Open Graphics Library (OpenGL)

Birdcage 7223

opengl 制作 3D 彩色旋转三角形

[置顶] OpenGL ES 2.0 -- 制作 3D 彩色旋转三角形 - 顶点着色器 片元着色器 使用详解 http://blog.csdn.net/shulianghan/article/details/17020359 分类: OpenGL ES 2.0 2013-12-05 00:00 2077人阅读 评论(3) 收藏 举报 OpenGL顶点着色

xww810319的专栏 3846
上一篇: 实验14——粒子系统
下一篇: 实验2.2——VAO,VBO的总结
averagePerson
博客等级 码龄5年 381粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值