OpenGL —— 2.5、绘制第一个三角形(附源码,glfw+glad)(更新:纹理贴图)

news/2025/1/16 1:39:51/
源码效果

在这里插入图片描述
在这里插入图片描述

C++源码


     纹理图片
在这里插入图片描述

     
     需下载stb_image.h这个解码图片的库,该库只有一个头文件。

在这里插入图片描述

     具体代码:

          vertexShader.glsl

#version 330 corelayout(location = 0) in vec3 aPos;
layout(location = 1) in vec3 aColor;
layout(location = 2) in vec2 aUV;out vec4 outColor;
out vec2 outUV;void main()
{gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);outColor = vec4(aColor, 1.0);outUV = aUV;
}


          fragmentShader.glsl

#version 330 coreout vec4 FragColor;in vec4 outColor;
in vec2 outUV;uniform sampler2D ourTexture;void main()
{// 使用色彩填充// FragColor = outColor;// 使用图片纹理//FragColor = texture(ourTexture, outUV);// 使用图片纹理及色彩混合FragColor = texture(ourTexture, outUV)*outColor;
}


          main.c

#include "OpenGLClass.h"int main()
{OpenGLClass opengl;return 0;
}


          ffImage.h

#pragma once#include "Global.h"class ffImage
{
private:int m_width, m_height, m_picType;ffRGBA *m_data;public:int getWidth()const;int getHeight()const;int getPicType()const;ffRGBA *getData()const;ffRGBA getColor(int x, int y)const;ffImage(int _width = 0, int _height = 0, int _picType = 0, ffRGBA *_data = nullptr);~ffImage();static ffImage *readFromFile(const char *_file_Name);
};


          ffImage.cpp

#include "ffImage.h"#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"int ffImage::getWidth() const
{return m_width;
}int ffImage::getHeight() const
{return m_height;
}int ffImage::getPicType() const
{return m_picType;
}ffRGBA *ffImage::getData() const
{return m_data;
}ffRGBA ffImage::getColor(int x, int y) const
{if (x<0 || x>m_width - 1 || y<0 || y>m_height - 1) { return ffRGBA(0, 0, 0, 0); }return m_data[y*m_width + x];
}ffImage::ffImage(int _width, int _height, int _picType, ffRGBA *_data)
{m_width = _width;m_height = _height;m_picType = _picType;int _sumSize = m_width * m_height;if (_data && _sumSize){m_data = new ffRGBA[_sumSize];memcpy(m_data, _data, sizeof(ffRGBA)*_sumSize);}else

http://www.ppmy.cn/news/1054972.html

相关文章

Python 自定义装饰器与上下文管理

1、定义装饰器实现计算函数运行时间 # 自定义装饰器 def compute_time(func):def compute(*args, **kwargs):st time.time()result func(*args, **kwargs)et time.time()print(消费时间 %.6f s % (et - st))return resultreturn compute# 使用 compute_time def work(work_i…

中国缝纫线行业调研与投资方向报告(2023版)

内容简介&#xff1a; 缝纫线按原材料主要分为天然纤维线及合成纤维线两大类。天然纤维线由棉花、羊毛或蚕丝制成&#xff0c;其中棉线最常用&#xff0c;也更适合于缝制内衣等精细织物。合成织维线的原材料可为涤纶、尼龙&#xff08;锦纶&#xff09;等&#xff0c;其中涤纶…

PIL.Image和base64,格式互转

将PIL.Image转base64 ##PIL转base64 import base64 from io import BytesIOdef pil_base64(image):img_buffer BytesIO()image.save(img_buffer, formatJPEG)byte_data img_buffer.getvalue()base64_str base64.b64encode(byte_data)return base64_str将base64转PIL.Image …

Wireshark流量分析例题

目录 前言 一、题目一(1.pcap) 二、题目二(2.pcap) 三、题目三(3.pcap) 四、题目四(4.pcap) 前言 Wireshark流量包分析对于安全来说是很重要的&#xff0c;我们可以通过Wireshark来诊断网络问题&#xff0c;检测网络攻击、监控网络流量以及捕获恶意软件等等 接下来我们…

科技政策 | 四川省科学技术厅关于发布2024年第一批省级科技计划项目申报指南的通知

原创 | 文 BFT机器人 近日&#xff0c;四川省科学技术厅发布了2024年第一批省级科技计划项目申报指南&#xff1b;其中包括自然科学基金项目、重点研发计划、科技成果转移转化引导计划、科技创新基地&#xff08;平台&#xff09;和人才计划。 01 自然科学基金项目 实施周期 …

多个微信号怎么定时发圈?

多个微信号怎么定时发圈&#xff1f;https://mp.weixin.qq.com/s?__bizMzg2Nzg4NjEzNg&mid2247487136&idx2&sn036e1d5f9d3790b12a103a90de474957&chksmceb5fbf7f9c272e1f8e9acf644ad3d4d97fb8fdce77ec5e2a2976527d4d180ad1c277b4336c8&token495803628&…

Linux 系统的如何优化(面试题)

Linux 系统的如何优化&#xff08;面试题&#xff09; (1) 禁用不需要的服务 ntsysv 命令最为方便&#xff0c;执行后&#xff0c;把不需要的勾选去掉就行 &#xff08;2&#xff09;避免直接使用root用户&#xff0c;普遍用户通过sudo授权操作 &#xff08;3&#xff09;通过…

OpenCV常用的算子

OpenCV提供了许多常用的图像处理算子和滤波器&#xff0c;用于图像增强、特征提取、噪声去除等任务。以下是一些OpenCV中常用的算子和滤波器&#xff1a; 均值滤波器&#xff08;Mean Filter&#xff09;&#xff1a;用于平滑图像&#xff0c;每个像素的值被其周围像素的平均值…